I'm developing a lot of stored procedures, and a great deal of them have a where clause similiar to the below. 

```
WHERE
    (CE.EnquiryDate >= @StartDate or @StartDate is null) and
    (CE.EnquiryDate <= @EndDate or @EndDate is null) and
    (CE.ClientID = @ClientID or @ClientID is null)

```

What concerns me is performance and the execution plans that are generated potentially causing issues down the track, i.e. if a plan is cached on first execution of the sp when only a clientid is passed then it is obviously going to be different to when a ClientID is not passed and a StartDate and EndDate are.

Am I going to be better off here splitting these off into multiple stored procedures or using `OPTION (RECOMPILE)` to get a new plan on each run? Just wondering what the best approach is in the early stages of development.