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

SELECT COUNT (*) chậm, ngay cả với mệnh đề where

InnoDB sử dụng các khóa chính được phân cụm, vì vậy khóa chính được lưu trữ cùng với hàng trong các trang dữ liệu, không phải trong các trang chỉ mục riêng biệt. Để thực hiện quét phạm vi, bạn vẫn phải quét qua tất cả các hàng có khả năng rộng trong các trang dữ liệu; lưu ý rằng bảng này chứa một cột TEXT.

Hai điều tôi sẽ thử:

  1. chạy optimize table . Điều này sẽ đảm bảo rằng các trang dữ liệu được lưu trữ vật lý theo thứ tự được sắp xếp. Điều này có thể giúp tăng tốc độ quét phạm vi trên một khóa chính được phân nhóm.
  2. tạo thêm một chỉ mục không phải chính trên cột change_event_id. Thao tác này sẽ lưu trữ một bản sao của cột đó trong các trang chỉ mục để quét nhanh hơn nhiều. Sau khi tạo nó, hãy kiểm tra kế hoạch giải thích để đảm bảo rằng nó đang sử dụng chỉ mục mới.

(bạn cũng có thể muốn đặt cột change_event_id thành bigint không dấu nếu nó tăng từ 0)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql - Cách thoát / thoát khỏi thủ tục được lưu trữ

  2. Khóa ngoại MySQL khi xóa

  3. MemoryError khi sử dụng json.dumps ()

  4. MySQL cập nhật một trường với một biến tăng dần

  5. Bạn không thể chỉ định bảng đích để cập nhật trong mệnh đề FROM