• If you can guarantee that a result set with a large date range will have a LOT of data, I would probably choose to evaluate the date range in the initial stored procedure and have it call one of two procedures.

    If the date range is large, then call Procedure A without a recompile.

    If the date range is small, then call Procedure B with a recompile (unless you can also guarantee that a small date range will always have a LITTLE data).

    This way you save the time of the recompile because Procedure A should always have the same optimum plan.