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ử:
- 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. - 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)