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

Liệu một chỉ số ghép với cột thứ hai có hiệu suất hiệu ứng bản số thấp có đủ để nó được sử dụng không?

Chi phí duy trì một chỉ mục (một cột hoặc nhiều cột) hầu như luôn luôn bị vượt lên bởi sự cải thiện hiệu suất khi chỉ mục đó được sử dụng. Nó là một gia số nhỏ trên mỗi INSERT / DELETE , cộng với chi phí nếu thay đổi giá trị của trường được lập chỉ mục qua UPDATE . (UPDATE rất hiếm.) Vì vậy, đừng lo lắng về chi phí "duy trì một chỉ số kết hợp".

WHERE `vehicles`.`type` IN ('Car')
  AND `vehicles`.`user_id` = 10

cần INDEX(user_id, type) .

Trình tối ưu hóa sẽ

  1. khám phá rằng chỉ mục đó là một ứng cử viên khả thi,
  2. kiểm tra một số thống kê, sau đó
  3. sử dụng chỉ mục hoặc quyết định bản số kém và chỉ cần quét bảng.

Bao gồm các chỉ số; đừng lo lắng về điều đó.

Tôi đã sắp xếp các trường theo cách đó, không phải (type, user_id) dựa trên IN của bạn , ngụ ý rằng đôi khi bạn có thể có nhiều giá trị cho type .

Nếu tất cả các hàng trong bảng có type = 'Car' , không vấn đề gì. Mọi thứ tôi đã nói vẫn được áp dụng. Sự lãng phí của việc bao gồm type không cần thiết không đáng kể.

Tốt hơn là nên có tất cả (các) cột "=" trước trong một chỉ mục, sau đó nhiều nhất là một trường khác. Thảo luận thêm tại đây .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Xử lý giao dịch trong môi trường đa luồng

  2. Làm cách nào để lấy bản ghi tiếp theo bên trong tập dữ liệu kết quả mysql?

  3. MySQL - Tìm MIN nhưng không phải 0

  4. Cách tìm đối chiếu trong MySQL

  5. Cài đặt Ruby gem mysql2 không thành công