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

MySQL - chỉ mục nhiều cột

Quy tắc chung cho các chỉ mục là đặt một cái vào bất kỳ trường nào được sử dụng trong WHERE hoặc JOIN mệnh đề.

Điều đó đang được nói, có một số tối ưu hóa bạn có thể làm. Nếu bạn BIẾT rằng một tổ hợp trường nhất định là trường duy nhất sẽ được sử dụng trong WHERE trên một bảng cụ thể, sau đó bạn có thể tạo một khóa đa trường duy nhất trên các trường đó, ví dụ:

INDEX (field1, field2, field5)

v.s.

INDEX (field1),
INDEX (field2),
INDEX (field5)

Chỉ mục đa trường có thể hiệu quả hơn trong nhiều trường hợp, chẳng hạn như phải quét nhiều chỉ mục. Nhược điểm là chỉ mục đa trường chỉ có thể sử dụng được nếu các trường được đề cập thực sự được sử dụng trong mệnh đề WHERE.

Với các truy vấn mẫu của bạn, vì elementfield_id nằm trong cả ba chỉ mục, bạn có thể tốt hơn nên tách chúng thành chỉ mục chuyên dụng của riêng chúng. Nếu đây là những trường có thể thay đổi, thì tốt hơn nên giữ nó chỉ mục dành riêng cho chúng. ví dụ. nếu bạn phải thay đổi field_id hàng loạt, DB phải cập nhật 3 chỉ mục khác nhau, v.s. chỉ cập nhật một cái dành riêng.

Nhưng tất cả đều phụ thuộc vào việc đo điểm chuẩn - hãy kiểm tra thiết lập cụ thể của bạn với các thiết lập chỉ mục khác nhau và xem thiết lập nào hoạt động tốt nhất. Quy tắc ngón tay cái rất hữu ích, nhưng không phải lúc nào cũng hoạt động 100%.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để nối hai bảng và so sánh chúng? (Tôi đã hỏi nhiều lần, nhưng tôi không thể tìm thấy câu trả lời.)

  2. Tính toán số dư với mysql

  3. không thể khởi động MySql trong Mac OS 10.6 Snow Leopard

  4. Lỗi mysql 1025 (HY000):Lỗi khi đổi tên của './foo' (errorno:150) nghĩa là gì?

  5. Cách tối ưu hóa hiệu suất MySQL bằng MySQLTuner