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

MySQL:cột số lượng / tính chọn lọc thấp =làm thế nào để lập chỉ mục?

Chỉ số mà bạn mô tả là khá vô nghĩa. Chỉ mục được sử dụng tốt nhất khi bạn cần chọn một nhỏ số hàng so với tổng số hàng.

Lý do cho điều này là liên quan đến cách cơ sở dữ liệu truy cập một bảng. Các bảng có thể được đánh giá bằng cách quét toàn bộ bảng, trong đó mỗi khối được đọc và xử lý lần lượt. Hoặc bằng cách tìm kiếm rowid hoặc key, trong đó cơ sở dữ liệu có key / rowid và đọc chính xác hàng mà nó yêu cầu.

Trong trường hợp bạn sử dụng mệnh đề where dựa trên khóa chính hoặc một chỉ mục duy nhất khác, ví dụ:where id = 1 , cơ sở dữ liệu có thể sử dụng chỉ mục để nhận tham chiếu chính xác đến nơi dữ liệu của hàng được lưu trữ. Điều này rõ ràng hiệu quả hơn việc quét toàn bộ bảng và xử lý từng khối.

Bây giờ quay lại ví dụ của bạn, bạn có mệnh đề where của where status = 'enabled' , chỉ mục sẽ trả về 150m hàng và cơ sở dữ liệu sẽ phải đọc lần lượt từng hàng bằng cách sử dụng các lần đọc nhỏ riêng biệt. Trong khi đó, việc truy cập bảng bằng cách quét toàn bộ bảng cho phép cơ sở dữ liệu sử dụng các lần đọc lớn hơn hiệu quả hơn.

Có một điểm mà tại đó tốt hơn là chỉ thực hiện quét toàn bộ bảng hơn là sử dụng chỉ mục. Với mysql, bạn có thể sử dụng FORCE INDEX (idx_name) như một phần của truy vấn của bạn để cho phép so sánh giữa từng phương pháp truy cập bảng.

Tham khảo: http:// dev .mysql.com / doc / refman / 5.5 / vi / cach-to-tránh-table-scan.html



  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 thế nào để kết nối với Cơ sở dữ liệu MySQL?

  2. JSON_STORAGE_FREE () - Tìm hiểu Dung lượng lưu trữ được giải phóng sau khi cập nhật tài liệu JSON trong MySQL

  3. CHỈ THAM GIA TRÁI hàng đầu tiên

  4. CodeIgniter:Lưu trữ hình ảnh trong cơ sở dữ liệu?

  5. Khắc phục “ERROR 1222 (21000):Các câu lệnh SELECT đã sử dụng có một số cột khác nhau” khi sử dụng UNION trong MySQL