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

Pourquoi mes requêtes \'SELECT COUNT(*)\' sur la table change_event sont-elles si lentes ?

Patricia Arquette
Libérer: 2024-10-31 01:40:02
original
326 Les gens l'ont consulté

Why are my

Lutter contre les requêtes lentes "SELECT COUNT(*)" sur MySQL

Votre requête sur la table change_event, en comptant les lignes qui dépassent un change_event_id spécifique , connaît des retards importants. Mais pourquoi ? Examinons les causes possibles.

Dévoilement du comportement d'InnoDB

Le moteur InnoDB de MySQL utilise des clés primaires en cluster, ce qui signifie que la clé primaire est stockée avec les données de ligne dans les pages de données, plutôt que des pages d’index séparées. Par conséquent, les analyses de plage, comme la vôtre, nécessitent d'analyser toutes les lignes potentiellement larges des pages de données. Ce facteur est exacerbé par la colonne xml_diff de la table, un type de données TEXT qui ralentit encore davantage le traitement.

Stratégies d'optimisation

Pour accélérer la requête, deux approches méritent d'être envisagées :

  • Optimiser le tableau :Cette commande réorganise les pages de données dans un ordre trié, améliorant potentiellement l'efficacité des analyses de plage.
  • Créer un index supplémentaire : L'établissement d'un index non principal uniquement sur la colonne change_event_id crée une copie de cette colonne dans les pages d'index. Cet index peut être analysé beaucoup plus rapidement que les pages de données. Vérifiez le plan d'explication après la création pour confirmer son utilisation.

Conseil supplémentaire :

Pour améliorer davantage les performances, envisagez de modifier la colonne change_event_id en bigint non signé. Cette étape évite les valeurs négatives et peut également rationaliser le traitement.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!