eg.
set @id=10
select * from table1 where id >=@id and id < 20
first time , engine will search data cache and finally pull data from disk .
2nd time
set @id=10
select * from table1 where id >=@id and id < 20
no will fetch from data cache.
2nd time
set @id=5
select * from table1 where id >=@id and id < 20
now engine will use same execution plan but how they will use data cache?