Mysql
 sql >> Base de données >  >> RDS >> Mysql

Pourquoi les lignes retournées par expliquer ne sont-elles pas égales à count() ?

Il montre combien de lignes il a parcouru pour obtenir votre résultat.

La raison des données erronées est que EXPLAIN n'est pas précis, il fait des suppositions sur vos données en fonction des informations stockées sur votre table.

Il s'agit d'informations très utiles, par exemple lorsque vous effectuez des JOINS sur de nombreuses tables et que vous voulez vous assurer que vous ne parcourez pas l'intégralité de la table jointe pour une ligne d'informations pour chaque ligne que vous avez.

Voici un test sur une table de 608 lignes.

SELECT COUNT(id) FROM table WHERE user_id = 1

Résultat :

COUNT(id)
512

Et voici l'explication

EXPLAIN SELECT COUNT(id) FROM table WHERE user_id = 1

Résultat :

id  rows
1   608