"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pourquoi mes requêtes \"SELECT COUNT(*)\" sur la table change_event sont-elles si lentes ?

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

Publié le 2024-11-18
Parcourir:689

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 la table : Cette commande réorganise les pages de données dans un ordre trié, améliorant potentiellement l'efficacité d'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.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3