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

Có phương pháp tối ưu nào để đặt chỉ mục tổng hợp MySQL không?

Theo quy tắc chung, trong chỉ mục nhiều cột, bạn muốn các cột có bản số cao nhất, hay nói cách khác, số lượng giá trị khác biệt cao nhất, đứng đầu trong chỉ mục.

Để chính xác hơn, trước tiên bạn muốn cột có ít kết quả phù hợp nhất có thể với tiêu chí tìm kiếm của mình để bạn có thể thu hẹp kết quả đặt ra càng nhiều càng tốt, nhưng nói chung, cột này giống với cột số cao nhất.

Vì vậy, trong ví dụ của bạn, bạn sẽ muốn cột có hàng triệu giá trị khác biệt nằm trong chỉ mục trước cột chỉ có 6 giá trị khác biệt.

Giả sử bạn chỉ chọn một hàng trong số hàng triệu giá trị, điều đó cho phép bạn loại bỏ nhiều hàng nhanh hơn.

Khi xem xét hai cột có số lượng tương tự nhau, hãy đặt cột nhỏ hơn trước (INTEGER các cột trước VARCHAR ) vì MySQL có thể so sánh và lặp lại chúng nhanh hơn.

Một lưu ý là nếu bạn đang chọn với phạm vi (ví dụ:WHERE datecol > NOW() ), sau đó bạn muốn các cột phạm vi xa nhất về bên phải và các cột của bạn có một hằng số duy nhất (ví dụ:WHERE id = 1 ) Qua bên trái. Điều này là do chỉ mục của bạn chỉ có thể được sử dụng để tìm kiếm và sắp xếp cho đến điểm của giá trị phạm vi đầu tiên.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng SSHTunnelForwarder để kết nối với db MySQL qua SSH

  2. Đếm số hàng được nhóm trong mysql

  3. Cách khắc phục lỗi kết nối cơ sở dữ liệu MySQL JDBC 08001

  4. MYSQL chọn những người bạn chung

  5. Trường AND NOT IN (NULL) trả về một tập hợp trống