Does CAST(DateTime AS DATE) cause the entire table to be CAST before comparison?
Whipped up a simple example on this using a handy calendar table. 

DECLARE @StartDate DATETIME = '2014-04-16 09:35:36.510'
DECLARE @EndDate DATETIME = '2014-05-16 09:35:36.510'


select
    *
from Calendar
where CAST(BaseDate AS date) &gt; CAST(@StartDate AS date)
    AND CAST(BaseDate AS date) &gt; CAST(@StartDate AS date)


When we look at the query plan for this we can see it's doing a simple index seek and all is well.