Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie kann ich Abfragen zur Zeilenzählung in großen MySQL-Tabellen beschleunigen?

DDD
Freigeben: 2024-11-19 16:46:03
Original
367 Leute haben es durchsucht

How Can I Speed Up Row Counting Queries in Large MySQL Tables?

Beschleunigung der Zeilenzählung in MySQL

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:

  • Verwendung einer spaltenbasierten Speicher-Engine: Dieser Ansatz kann count(*)-Abfragen verbessern, könnte jedoch die Leistung für andere Vorgänge beeinträchtigen.
  • Pflege einer Übersichtstabelle : Trigger können jedes Mal, wenn eine Zeile eingefügt, gelöscht oder aktualisiert wird, eine separate Übersichtstabelle aktualisieren. Dieser Ansatz ermöglicht sofortige Zeilenzählungen während SELECT-Vorgängen.

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
//
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage