SQL_NO_CACHE
Jednoduše přidejte SQL_NO_CACHE za část SELECT příkazu SELECT a před seznam polí. První dotaz níže použije mezipaměť dotazů, pokud je povolena a dotaz je v mezipaměti:
SELECT * FROM table WHERE search= 'keyword'; //lets take 1ms
Druhý dotaz níže nebude používat mezipaměť dotazů:
SELECT SQL_NO_CACHE * FROM table WHERE search= 'keyword'; //lets take ~0.2ms at 2nd time
To je užitečné zejména při srovnávání dotazu; pokud je povolena mezipaměť dotazů, ačkoli první dotaz může nějakou dobu trvat, druhý a následující dotazy jsou téměř okamžité. S použitím SQL_NO_CACHE si můžete být jisti, že se nevyužívá mezipaměť dotazů a můžete bezpečně porovnávat časy výsledků. Nápověda SQL_NO_CACHE vypne vestavěný mechanismus mezipaměti dotazů MySQL pro konkrétní dotaz. Můžete pomoci MySQL zefektivnit mezipaměť dotazů tím, že použijete tuto nápovědu u dotazů, které jsou vysoce dynamické (jako je vyhledávání klíčových slov nebo sestava, která se spouští pouze v noci). Ujistěte se, že je mezipaměť dotazů zapnutá, jinak to není potřeba. příkaz.
Co SQL_CACHE a SQL_NO_CACHE?
Volby SQL_CACHE a SQL_NO_CACHE ovlivňují ukládání výsledků dotazů do mezipaměti dotazů. SQL_CACHE říká MySQL, aby uložila výsledek do mezipaměti dotazů, pokud je cacheovatelná a hodnota systémové proměnné query_cache_type je 2 nebo DEMAND. S SQL_NO_CACHE server nepoužívá mezipaměť dotazů. Nekontroluje mezipaměť dotazů, aby zjistil, zda je výsledek již uložen do mezipaměti, ani neukládá do mezipaměti výsledek dotazu. (Vzhledem k omezení v analyzátoru musí před klíčovým slovem SQL_NO_CACHE a za ním následovat znak mezery; mezera, jako je nový řádek, způsobí, že server zkontroluje mezipaměť dotazů, aby zjistil, zda je výsledek již uložen do mezipaměti.)
NO_CACHE podle mého názoru lze použít, pokud je povolena 'CACHE' a data v db jsou dynamicky aktualizována, tj. nelze spoléhat na datovou mezipaměť db, např.:ukládání hash uživatelského hesla nemůžeme se spolehnout na CACHE, protože je častá možnost změny údajů
Aktualizace užitečných scénářů
1) vynutit nepoužívat mezipaměť pro testování rychlosti dotazu