sql >> Database >  >> RDS >> Mysql

Het tellen van rijen versnellen in MySQL

Dus de vraag is

zijn er technieken om dit soort zoekopdrachten te versnellen?

Nou niet echt. Een op kolommen gebaseerde opslagengine zou waarschijnlijk sneller zijn met die SELECT COUNT(*)-query's, maar hij zou minder presteren voor vrijwel elke andere query.

U kunt het beste een samenvattende tabel bijhouden via triggers. Het heeft niet veel overhead en het SELECT-gedeelte is onmiddellijk beschikbaar, hoe groot de tafel ook is. Hier is wat standaardcode:

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. Hoe COS() werkt in MariaDB

  2. Simuleren group_concat MySQL-functie in Microsoft SQL Server 2005?

  3. MySQL:snelste manier om het aantal rijen te tellen

  4. Een back-up maken van MySQL-databases vanaf de opdrachtregel in Linux