sql >> Databáze >  >> RDS >> Mysql

Zrychlení počítání řádků v MySQL

Otázka tedy zní

existují nějaké techniky pro urychlení těchto druhů dotazů?

No ne tak úplně. Sloupcové úložiště by pravděpodobně bylo rychlejší s těmito SELECT COUNT(*) dotazy, ale bylo by méně výkonné pro téměř jakýkoli jiný dotaz.

Nejlepším řešením je udržovat souhrnnou tabulku pomocí spouštěčů. Nemá to moc režii a část SELECT bude okamžitá bez ohledu na to, jak velký je stůl. Zde je nějaký standardní kód:

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
//


  1. Statistika čekání na koleno:PAGEIOLATCH_SH

  2. Jak povolit Change Data Capture (CDC) v databázi na SQL Server - SQL Server výukový program

  3. Jak zavolat uloženou proceduru uvnitř balíčku Oracle s Entity Framework?

  4. Vyberte sloupce v různých databázích