Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cập nhật bảng tóm tắt dựa trên các trình kích hoạt và quy trình được lưu trữ

Bạn đang truy vấn lại DB nhiều lần để tìm dữ liệu mà bạn đã biết.

Tại sao không chỉ cập nhật bản tóm tắt chỉ với những thay đổi.

DELIMITER $$

CREATE TRIGGER ai_base_each AFTER INSERT ON base FOR EACH ROW
BEGIN
  INSERT INTO summary (status, count) VALUES (NEW.status,1)
  ON DUPLICATE KEY UPDATE
    SET count = count + 1;
END $$

CREATE TRIGGER ad_base_each AFTER DELETE ON base FOR EACH ROW
BEGIN
  UPDATE summary s
    SET s.count = s.count - 1 
    WHERE s.status = OLD.status;
END $$


CREATE TRIGGER au_base_each AFTER UPDATE ON base FOR EACH ROW
BEGIN
  UPDATE summary s
    SET s.count = s.count - 1 
    WHERE s.status = OLD.status;

  INSERT INTO summary (status, count) VALUES (NEW.status,1)
  ON DUPLICATE KEY UPDATE
    SET count = count + 1;
END $$

DELIMITER ;

Điều này sẽ nhanh hơn nhiều và nhiều hơn đến mức thanh lịch hơn nhiều.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Trao đổi giá trị cột trong MySQL

  2. Cách tìm hiệu quả các vị trí gần nhất gần một vị trí nhất định

  3. UTF-8 so với mysql Latin1, các chỉ mục không được sử dụng trên utf-8

  4. lỗi khóa ngoại mysql # 1452

  5. Laravel Crypt - So sánh các giá trị