Ці команди виконують дві речі:
- Очистіть кеш сторінок, у якому зберігаються сторінки даних, які вже були отримані з диска (як правило, найбільшим фактором часу в запиті є доступ до диска)
- Очистіть кеш плану запитів, а це означає, що серверу потрібно створити новий план запитів. Зазвичай це не суттєво, за винятком дуже великих обсягів транзакцій.
Ви в основному отримуєте час, еквівалентний "гіршому випадку", ви просто перезавантажили сервер і нічого не залишається в пам'яті. Подальші запуски не потребують оплати витрат на витяг даних з диска, оскільки ці сторінки вже завантажені в пам'ять.
Це схоже на ситуацію в реальному світі - вашому першому користувачеві, який виконує певний запит, швидше за все, доведеться чекати довше, ніж при наступних запусках, якщо припустити, що ви перевіряєте ті самі дані.
Хороший метод, який мені подобається використовувати, - це запуск декількох разів та взяття середнього. Це особливо корисно в спільному середовищі, оскільки ви не маєте повного контролю над спільними ресурсами, такими як tempdb.
Ви також можете скористатися цими командами, щоб отримати більше інформації про те, що насправді відбувається за лаштунками:
SET STATISTICS IO ON
SET STATISTICS TIME ON
Вони дадуть вам детальну інформацію про зчитування сторінки з диска (на об'єкт), логічні зчитування сторінки, час, витрачений на складання плану, і час, витрачений на виконання запиту.