Maison >base de données >tutoriel mysql >Pourquoi le nombre de lignes « explain selected * » diffère-t-il de « count() » ?
Écart dans le nombre de lignes entre "count()" et "explain selected *""
La commande "explain selected *" dans MySQL fournit une estimation des lignes traitées lors d'une requête. Cependant, cette estimation peut différer du nombre réel de lignes obtenu à l'aide de la fonction "count()".
Explication
L'instruction "explain selected *" affiche des informations sur la façon dont MySQL exécute une requête. Parmi les détails fournis se trouve une estimation du nombre de lignes que la requête analysera. Cette estimation est basée sur les statistiques maintenues par MySQL sur la table interrogée.
Cependant, ces statistiques peuvent ne pas toujours être exactes. Des facteurs tels que la distribution des données, la structure de la table et le contexte de la requête peuvent influencer l'exactitude de l'estimation. Par conséquent, le nombre de lignes « Expliquer la sélection * » peut ne pas être exact. correspondent au nombre de lignes réel traité par la requête.
Exemple
Considérons l'exemple suivant :
mysql> select count(*) from table where relation_title='xxxxxxxxx'; +----------+ | count(*) | +----------+ | 1291958 | +----------+ mysql> explain select * from table where relation_title='xxxxxxxxx'; +----+-------------+---------+- | id | select_type | rows | +----+-------------+---------+- | 1 | SIMPLE | 1274785 | +----+-------------+---------+-
Comme observé, le "explain selected" *" L'instruction estime que 1 274 785 lignes seront analysées pour récupérer les données. Cependant, la fonction "count()" renvoie un nombre réel de 1 291 958 lignes.
Implications
L'écart entre le nombre de lignes peut induire les utilisateurs en erreur en leur faisant croire qu'un index est utilisé pour optimiser la requête. Cependant, cela peut ne pas être le cas et la requête peut encore analyser un nombre important de lignes.
Conclusion
Alors que « expliquer la sélection * » fournit des informations précieuses concernant l'exécution des requêtes, il ne faut pas s'y fier comme mesure précise du nombre réel de lignes traitées par une requête. La fonction "count()" doit être utilisée pour obtenir un décompte précis des lignes correspondantes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!