Maison > Article > base de données > Comprendre l'optimiseur de requêtes MySQL : COUNT(id) vs COUNT(*)
Dans MySQL, nous utilisons les fonctions "COUNT" presque tous les jours pour nous aider à calculer le nombre de lignes pour une requête donnée. Le plus grand dilemme de tout développeur concernant les performances est de savoir s'il est préférable d'utiliser "COUNT(*)" ou "COUNT(id)".
L'optimiseur MySQL est un composant essentiel de MySQL chargé de déterminer le moyen le plus efficace d'exécuter une requête SQL donnée. Cette partie joue un rôle clé dans le dilemme selon lequel « COUNT » est le plus rapide. Alors expliquons...
On crée la table "users", qui aura un index sur la colonne "first_name" :
CREATE table users ( id int NOT NULL AUTO_INCREMENT, first_name varchar(256) NOT NULL, PRIMARY KEY (id), INDEX idx_first_name (first_name) );
Nous ajoutons quelques lignes et exécutons les 2 requêtes suivantes :
EXPLAIN SELECT COUNT(id) FROM users;
EXPLAIN SELECT COUNT(*) FROM users;
Lorsque vous exécutez ces 2 requêtes SQL, vous remarquerez qu'elles utilisent le même index, "COUNT(*)" n'est pas du tout plus lent, l'optimiseur MySQL s'en charge, qui trouve l'index dans la table qui va donner les meilleures performances. Dans ce cas, les deux requêtes renverront les données à la même vitesse, car elles utilisent le même index et parce que l'optimiseur MySQL a décidé que cet index était le plus efficace.
MySQL Optimizer prend en compte de nombreux paramètres qui contribuent au choix de la meilleure clé d'index afin que la requête donnée renvoie les données le plus rapidement possible.
L'utilisation de "COUNT(*)" est généralement recommandée car elle permet à l'optimiseur MySQL de choisir l'approche la plus efficace, tandis que "COUNT(column_name)" peut être spécifiquement utile dans les situations où il est nécessaire de compter uniquement les non- Valeurs NULL dans une colonne particulière. Comprendre le fonctionnement de MySQL Optimizer et comment utiliser les index est essentiel pour obtenir des performances de requête optimales.
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!