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