Maison > base de données > tutoriel mysql > Comment optimiser une requête lente \'SELECT COUNT(*)\' impliquant une analyse de plage sur la clé primaire dans MySQL ?

Comment optimiser une requête lente \'SELECT COUNT(*)\' impliquant une analyse de plage sur la clé primaire dans MySQL ?

DDD
Libérer: 2024-10-29 18:49:02
original
1068 Les gens l'ont consulté

How to Optimize a Slow

Optimisation pour une requête lente "SELECT COUNT(*)" dans MySQL

Lors de l'interrogation de tables volumineuses, des performances lentes peuvent survenir malgré la présence de une clause WHERE. Analysons un cas spécifique où une requête "SELECT COUNT(*)" avec un critère de plage prend trop de temps.

L'explication fournie par "EXPLAIN" suggère qu'une analyse de plage est en cours. Cependant, l'écart de performances entre le décompte complet et le décompte filtré reste inexpliqué.

En examinant la définition de la table, nous observons que la colonne "change_event_id" sert de clé primaire, qui est stockée sous forme clusterisée. Cela signifie que les valeurs de clé primaire sont stockées avec les données sur les mêmes pages de disque. Par conséquent, les analyses de plage sur la clé primaire nécessitent la lecture de toutes les pages de données.

Pour améliorer les performances, envisagez les stratégies suivantes :

  • Optimiser la table : Exécutez "OPTIMIZE TABLE" pour réorganiser les pages de données dans un ordre trié, ce qui peut potentiellement accélérer les analyses de plage.
  • Créer un index secondaire : Définissez un index non principal spécifiquement sur le "change_event_id " colonne. Cela créera une structure d'index distincte, permettant d'exécuter plus efficacement les analyses de plage sur cette colonne.

De plus, il est recommandé de modifier la colonne "change_event_id" pour qu'elle soit "bigint non signée" si elle est incrémentant à partir de zéro. Cela garantira qu'elle pourra stocker des valeurs plus grandes sans déborder.

En mettant en œuvre ces optimisations, les performances de la requête "SELECT COUNT(*)" avec le critère de plage devraient s'améliorer considérablement, la rendant comparable au décompte complet .

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: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