Problem:
MySQL fragt ab, um die Anzahl der Zeilen in einer großen Tabelle zu zählen oder sie nach einer bestimmten Spalte zu gruppieren, kann mit zunehmender Größe der Tabelle langsam werden. Selbst die Indizierung der für die Gruppierung verwendeten Spalte verbessert die Leistung nicht konsequent.
Exploration:
Zur Optimierung dieser Abfragen gibt es alternative Ansätze ohne Caching:
Implementierung:
Zur Pflege einer Übersichtstabelle können die folgenden Boilerplate-Trigger verwendet werden:
DELIMITER // CREATE TRIGGER ai_books AFTER INSERT ON books FOR EACH ROW UPDATE books_cnt SET total = total + 1 WHERE status = NEW.status // CREATE TRIGGER ad_books AFTER DELETE ON books FOR EACH ROW UPDATE books_cnt SET total = total - 1 WHERE status = OLD.status; // CREATE TRIGGER au_books AFTER UPDATE ON books FOR EACH ROW BEGIN IF (OLD.status <> NEW.status) THEN UPDATE books_cnt SET total = total + IF(status = NEW.status, 1, -1) WHERE status IN (OLD.status, NEW.status); END IF; END //
Durch die Pflege einer Übersichtstabelle können Abfragen zur Zeilenzählung viel schneller ausgeführt werden, unabhängig von der Tabellengröße.
Das obige ist der detaillierte Inhalt vonWie kann ich Abfragen zur Zeilenzählung in großen MySQL-Tabellen beschleunigen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!