This question already has an answer here:
- SQL Server cache question 5 answers
When I run a query does the SQL Server caches the results?
Because: When I run the below query:
SELECT id
FROM Foo
WHERE Foo.Name LIKE '%bar%'
The query runs for 40 seconds on the 1st time.
But on the second run it takes only a few seconds.
Is this because the execution plan is somehow cached or actually the data is cached so that I can retrieve it much faster on the 2nd run?
SQL Server does not cache the query results, but it caches the data pages it reads in memory. The data from these pages is then used to produce the query result.
You can easily see if the data was read from memory or from disk by setting
Which returns the following information on execution of the query
The difference between logical and physical reads is the data read from memory.
SQL Server will also claim Memory for caching until the maximum (configured, or physical maximum) is reached and then the oldest pages are flushed.