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

Những gì nên được lập chỉ mục để cải thiện hiệu suất?

Nói chung, các bộ lọc lựa chọn có thể sử dụng các chỉ mục trên user_id hoặc activity_type_id hoặc cả hai (theo một trong hai thứ tự).

Thao tác đặt hàng có thể sử dụng bộ lọc trên created_at .

Có thể là đối với truy vấn này, một chỉ mục tổng hợp trên (user_id, activity_type_id) sẽ cho kết quả tốt nhất, giả sử rằng MySQL thực sự có thể sử dụng nó. Nếu không đạt được điều đó, tốt hơn là nên lập chỉ mục user_id hơn activity_type_id bởi vì nó có khả năng cung cấp khả năng chọn lọc tốt hơn. Một lý do để nghĩ rằng sẽ có 4 phần phụ của chỉ mục để quét nếu nó sử dụng chỉ mục trên activity_type_id , được so sánh với chỉ một tiểu mục để quét nếu nó sử dụng chỉ mục trên user_id một mình.

Cố gắng dựa vào một chỉ mục cho thứ tự sắp xếp có thể đồng nghĩa với việc quét toàn bộ bảng, vì vậy ít có khả năng có lợi hơn. Tôi sẽ không tạo chỉ mục trên created_at để hỗ trợ truy vấn này; có thể có các truy vấn khác mà nó sẽ có lợi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các ràng buộc về MySQL và Kiểm tra

  2. Cách đọc và đặt lại AUTO_INCREMENT trong MySQL

  3. Tuyên bố chuẩn bị sẵn trong PHP mysql REGEXP

  4. Nhận kết quả mysql của cập nhật mặt hàng

  5. Trợ giúp về thuật toán truy vấn MYSQL trong PHP