Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Mempercepat penghitungan baris di MySQL

Jadi pertanyaannya adalah

apakah ada teknik untuk mempercepat kueri semacam ini?

Yah, tidak juga. Mesin penyimpanan berbasis kolom mungkin akan lebih cepat dengan kueri SELECT COUNT(*) tersebut, tetapi kinerjanya akan lebih rendah untuk hampir semua kueri lainnya.

Taruhan terbaik Anda adalah mempertahankan tabel ringkasan melalui pemicu. Itu tidak memiliki banyak overhead dan bagian SELECT akan seketika tidak peduli seberapa besar tabelnya. Berikut beberapa kode boilerplate:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jenis MySQL ENUM vs tabel gabungan

  2. MySQL InnoDB tidak melepaskan ruang disk setelah menghapus baris data dari tabel

  3. Grup MySQL Berdasarkan dan Pesan Berdasarkan

  4. Apakah nama tabel di MySQL case sensitif?

  5. MySQL TIDAK DALAM permintaan