SQL_NO_CACHE
Ajoutez simplement SQL_NO_CACHE après la partie SELECT de l'instruction SELECT et avant la liste des champs. La première requête ci-dessous utilisera le cache de requêtes s'il est activé et que la requête est mise en cache :
SELECT * FROM table WHERE search= 'keyword'; //lets take 1ms
La deuxième requête ci-dessous n'utilisera pas le cache de requête :
SELECT SQL_NO_CACHE * FROM table WHERE search= 'keyword'; //lets take ~0.2ms at 2nd time
Ceci est particulièrement utile lors de l'analyse comparative d'une requête ; si le cache de requête est activé, bien que la première requête puisse prendre un certain temps, la deuxième requête et les suivantes sont presque instantanées. Avec l'utilisation de SQL_NO_CACHE, vous pouvez être assuré que le cache des requêtes n'est pas utilisé et que vous pouvez comparer les temps de résultat en toute sécurité. L'indicateur SQL_NO_CACHE désactive le mécanisme de mise en cache des requêtes intégré de MySQL pour une requête particulière. Vous pouvez aider MySQL à rendre le cache des requêtes plus efficace en utilisant cet indice sur les requêtes hautement dynamiques (telles qu'une recherche par mot-clé ou un rapport qui ne s'exécute que la nuit). Assurez-vous que la mise en cache des requêtes est activée, sinon cela n'est pas nécessaire. commande.
qu'est-ce que SQL_CACHE et SQL_NO_CACHE ?
Les options SQL_CACHE et SQL_NO_CACHE affectent la mise en cache des résultats de requête dans le cache de requête. SQL_CACHE indique à MySQL de stocker le résultat dans le cache de la requête s'il peut être mis en cache et si la valeur de la variable système query_cache_type est 2 ou DEMAND. Avec SQL_NO_CACHE, le serveur n'utilise pas le cache des requêtes. Il ne vérifie pas le cache de la requête pour voir si le résultat est déjà mis en cache, ni ne met en cache le résultat de la requête. (En raison d'une limitation dans l'analyseur, un caractère d'espacement doit précéder et suivre le mot-clé SQL_NO_CACHE ; un non-espace tel qu'un retour à la ligne oblige le serveur à vérifier le cache de la requête pour voir si le résultat est déjà mis en cache.)
NO_CACHE selon mon avis peut être utilisé si 'CACHE' est activé et que les données de la base de données sont mises à jour dynamiquement, c'est-à-dire que le cache de données de la base de données ne peut pas être invoqué, par exemple:stocker le hachage du mot de passe utilisateur, nous ne pouvons pas compter sur CACHE car il est fréquent possibilité d'un changement de données
Mises à jour de scénarios utiles
1) forcer à ne pas utiliser le cache pour tester la vitesse de la requête