Maison >base de données >tutoriel mysql >Pourquoi le nombre de lignes « explain selected * » diffère-t-il de « count() » ?

Pourquoi le nombre de lignes « explain selected * » diffère-t-il de « count() » ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-07 02:42:02594parcourir

Why Does

É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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn