Bekämpfung langsamer „SELECT COUNT(*)“-Abfragen in MySQL
Ihre Abfrage in der Tabelle „change_event“, wobei Zeilen gezählt werden, die eine bestimmte change_event_id überschreiten kommt es zu erheblichen Verzögerungen. Aber warum? Lassen Sie uns mögliche Ursachen untersuchen.
Enthüllung des Verhaltens von InnoDB
Die InnoDB-Engine von MySQL verwendet geclusterte Primärschlüssel, was bedeutet, dass der Primärschlüssel neben Zeilendaten in Datenseiten gespeichert wird als separate Indexseiten. Daher müssen bei Bereichsscans wie Ihrem alle potenziell breiten Zeilen in Datenseiten gescannt werden. Dieser Faktor wird durch die Spalte xml_diff der Tabelle, einen TEXT-Datentyp, der die Verarbeitung weiter verlangsamt, noch verschärft.
Optimierungsstrategien
Um die Abfrage zu beschleunigen, sind zwei Ansätze eine Überlegung wert :
Zusätzlicher Tipp:
Um die Leistung weiter zu verbessern, sollten Sie die Spalte „change_event_id“ in „bigint unsigned“ ändern. Dieser Schritt verhindert negative Werte und kann auch die Verarbeitung rationalisieren.
Das obige ist der detaillierte Inhalt vonWarum sind meine „SELECT COUNT(*)'-Abfragen in der Tabelle „change_event' so langsam?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!