Az SQL Server igen szofisztikált cache-elési mechanizmussal rendelkezik (képes a memóriában tárolni a felparseolt query-ket, beolvasott lapokat, stb). Erre ritkán gondolunk úgy, mint egy probléma forrására - legtöbbszöt inkább öröm, hogy többedszeri futtatásra már akár nagyságrendekkel gyorsabban lefuthat a lekérdezésünk. Egy szituáció azonban van, amikor ez zavaró: ha teljesítmény-elemzést, optimalizálást próbálunk végezni, általában azt is szeretnénk látni, hogy mi van, ha egy "hideg" adatbázis-motor kapja meg a kérésünk.
Szerencsére ezek a cache-ek törölhetők: a DBCC FREEPROCCACHE segítségével a végrehajtási tervek cache-ét üríthetjük ki, a DBCC DROPCLEANBUFFERS segítségével pedig az eddig felolvasott adatokat invalidálhatjuk.
Érdemes tehát így kezdeni az optimalizáladó querynk futtatását:
DBCC FREEPROCCACHE DBCC DROPCLEANBUFFERS SELECT Mezo1, Mezo2, ... -- További bonyolult query...Bánjuk viszont óvatosan ezekkel, amennyiben egy produkciós környezetben futó SQL Serverrel játszunk - nem biztos, hogy a felhasználóink örülni fognak az esetlegesen sokszorosára nyúló válaszidőknek.

2 megjegyzés: