Maison > base de données > tutoriel mysql > le corps du texte

Comprendre l'optimiseur de requêtes MySQL : COUNT(id) vs COUNT(*)

WBOY
Libérer: 2024-07-18 04:35:10
original
708 Les gens l'ont consulté

Understanding MySQL Query Optimizer: 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)".


Optimiseur MySQL

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)
);
Copier après la connexion

Nous ajoutons quelques lignes et exécutons les 2 requêtes suivantes :

EXPLAIN SELECT COUNT(id) FROM users;
Copier après la connexion
EXPLAIN SELECT COUNT(*) FROM users;
Copier après la connexion

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.


Conclusion

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!

source:dev.to
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal