SQL_NO_CACHE
Voeg eenvoudig SQL_NO_CACHE toe na het SELECT-gedeelte van de SELECT-instructie en vóór de lijst met velden. De eerste query hieronder gebruikt de querycache als deze is ingeschakeld en de query in de cache wordt opgeslagen:
SELECT * FROM table WHERE search= 'keyword'; //lets take 1ms
De tweede query hieronder gebruikt de querycache niet:
SELECT SQL_NO_CACHE * FROM table WHERE search= 'keyword'; //lets take ~0.2ms at 2nd time
Dit is met name handig bij het benchmarken van een query; als de querycache is ingeschakeld, hoewel de eerste query enige tijd kan duren, zijn de tweede en volgende query's bijna onmiddellijk. Met het gebruik van SQL_NO_CACHE kunt u er zeker van zijn dat de querycache niet wordt gebruikt en dat u de resultaattijden veilig kunt vergelijken. De SQL_NO_CACHE-hint schakelt het ingebouwde querycaching-mechanisme van MySQL uit voor een bepaalde query. U kunt MySQL helpen de querycache efficiënter te maken door deze hint te gebruiken voor zeer dynamische zoekopdrachten (zoals een zoekopdracht op trefwoorden of een rapport dat alleen 's nachts wordt uitgevoerd). Zorg ervoor dat querycaching is ingeschakeld, anders is dit niet nodig commando.
welke SQL_CACHE en SQL_NO_CACHE ?
De opties SQL_CACHE en SQL_NO_CACHE zijn van invloed op het cachen van queryresultaten in de querycache. SQL_CACHE vertelt MySQL om het resultaat op te slaan in de querycache als deze cachebaar is en de waarde van de query_cache_type systeemvariabele 2 of DEMAND is. Bij SQL_NO_CACHE gebruikt de server de querycache niet. Het controleert de querycache niet om te zien of het resultaat al in de cache is opgeslagen, en het queryresultaat wordt ook niet in de cache opgeslagen. (Vanwege een beperking in de parser moet een spatie voorafgaan aan en volgen op het sleutelwoord SQL_NO_CACHE; een niet-spatie zoals een nieuwe regel zorgt ervoor dat de server de querycache controleert om te zien of het resultaat al in de cache is opgeslagen.)
NO_CACHE kan naar mijn mening worden gebruikt als 'CACHE' is ingeschakeld en de gegevens in de db dynamisch worden bijgewerkt, dat wil zeggen dat er niet op db-gegevenscache kan worden vertrouwd, bijvoorbeeld:het opslaan van gebruikerswachtwoord-hash we kunnen niet vertrouwen op CACHE omdat er frequent mogelijkheid tot wijziging van gegevens
Updates van nuttige scenario's
1) forceer om de cache niet te gebruiken voor het testen van de snelheid van de zoekopdracht