SQL_NO_CACHE
Du skal blot tilføje SQL_NO_CACHE efter SELECT-delen af SELECT-sætningen og før feltlisten. Den første forespørgsel nedenfor vil bruge forespørgselscachen, hvis den er aktiveret, og forespørgslen er cachelagret:
SELECT * FROM table WHERE search= 'keyword'; //lets take 1ms
Den anden forespørgsel nedenfor vil ikke bruge forespørgselscachen:
SELECT SQL_NO_CACHE * FROM table WHERE search= 'keyword'; //lets take ~0.2ms at 2nd time
Dette er især nyttigt ved benchmarking af en forespørgsel; hvis forespørgselscachen er aktiveret, selvom den første forespørgsel kan tage noget tid, er den anden og efterfølgende forespørgsler næsten øjeblikkelige. Med brugen af SQL_NO_CACHE kan du være sikker på, at forespørgselscachen ikke bruges og sikkert kan sammenligne resultattider. SQL_NO_CACHE-hintet slår MySQL's indbyggede forespørgselscache-mekanisme fra for en bestemt forespørgsel. Du kan hjælpe MySQL med at gøre forespørgselscachen mere effektiv ved at bruge dette tip til forespørgsler, der er meget dynamiske (såsom en søgeordssøgning eller en rapport, der kun kører om natten). Sørg for, at forespørgselscache er slået til, ellers er der ikke behov for dette kommando.
hvilken SQL_CACHE og SQL_NO_CACHE?
Indstillingerne SQL_CACHE og SQL_NO_CACHE påvirker cachelagring af forespørgselsresultater i forespørgselscachen. SQL_CACHE fortæller MySQL at gemme resultatet i forespørgselscachen, hvis den er cachebar, og værdien af systemvariablen query_cache_type er 2 eller DEMAND. Med SQL_NO_CACHE bruger serveren ikke forespørgselscachen. Den kontrollerer hverken forespørgselscachen for at se, om resultatet allerede er cachelagret, og den cacherer heller ikke forespørgselsresultatet. (På grund af en begrænsning i parseren skal et mellemrumstegn gå foran og følge SQL_NO_CACHE nøgleordet; et ikke-mellemrum, såsom en ny linje, får serveren til at kontrollere forespørgselscachen for at se, om resultatet allerede er cachelagret.)
NO_CACHE kan efter min mening bruges, hvis 'CACHE' er aktiveret, og dataene i db'en er dynamisk opdateret, dvs. at db-datacachen ikke kan stoles på, f.eks. mulighed for ændring af data
Opdateringer af nyttige scenarier
1) tvinge til ikke at bruge cache til at teste forespørgselshastigheden