Maison >base de données >tutoriel mysql >Résumé de l'optimisation MySQL - nombre total de requêtes
Cet article présente principalement le résumé de l'optimisation MySQL - le nombre total de requêtes. L'article effectue un test et une comparaison simples, qui ont une certaine valeur de référence. J'espère que cela pourra aider tout le monde.
1, COUNT(*) et COUNT(COL)
COUNT(*) effectue généralement une analyse d'index sur la clé primaire, tandis que COUNT(COL ) Pas nécessairement. De plus, le premier correspond au nombre total de tous les enregistrements correspondants dans le tableau statistique, tandis que le second correspond au nombre de tous les enregistrements COL correspondants dans le tableau de calcul. Il y a des différences.
Résumé de l'optimisation, pour les tables MyISAM :
1. SELECT COUNT(*) FROM tablename est le meilleur choix en toutes circonstances ;
2. Réduisez les requêtes SELECT COUNT(*) FROM tablename WHERE COL = 'value'
3. Éliminez l'occurrence de SELECT COUNT(COL) FROM tablename WHERE COL2 ='value'.
2. COUNT(*) ou COUNT(id)
D'après ma compréhension, il devrait être plus rapide d'utiliser COUNT(id) Parce que si mon identifiant est une clé primaire à incrémentation automatique, alors le calcul de son nombre consommera évidemment moins de ressources que le calcul du nombre de tous les champs. Cependant, j'ai vu plus d'un article similaire au guidage de l'accélération des requêtes MySQL. Ils recommandent tous d'utiliser SELECT COUNT(*) au lieu de la clé primaire directe COUNT. Pourquoi ?
Il semble que le nombre total d'entrées soit stocké dans la table à l'aide du moteur MyISAM. S'il n'y a pas de WHERE ou WHERE est toujours vrai (comme WHERE 1), alors COUNT(*) peut. renvoie directement le nombre total d’entrées.
De plus, il est évident que COUNT(*) ne "compte pas tous les champs". Évidemment, MySQL analysera * en "un morceau de données".
Données de test, comparaison simple, plus de tests approfondis :
#0.817-一百万条的查询时间 select count(*) from student ; #0.789-一百万条的查询时间 select count(id) from student; #1.011-一百万条的查询时间 select count(name) from student; #1.162-一百万条的查询时间 SELECT COUNT(*) FROM student WHERE namelike '%xiaoli%';#默认用主键索引查询,但是加上like条件后索引失效
En général, utiliser COUNT(id ) est toujours plus rapide. Voici une comparaison simple pour votre référence.
Recommandations associées :
Exemple de partage d'échange IN pour INNER JOIN dans l'optimisation MySQL
Un résumé de certaines méthodes d'optimisation MySQL couramment utilisées
Un résumé des méthodes de requête d'instructions SQL d'optimisation MySQL couramment utilisées
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!