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

Résumé de l'optimisation MySQL - nombre total de requêtes

小云云
Libérer: 2017-12-08 11:38:00
original
2900 Les gens l'ont consulté

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条件后索引失效
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
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