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

Mệnh đề IN không sử dụng chỉ mục

Tôi sẽ đi ra ngoài và nói rằng đó là vì bạn đang sử dụng công cụ MyISAM.

Nó hoạt động hoàn toàn tốt với INNODB như bạn có thể thấy trong Câu trả lời này của tôi.

Tôi sẽ cố gắng tìm ra ít nhất 1 tài liệu tham khảo danh giá về vấn đề này.

Tại đây, Loại tham gia phạm vi , rõ ràng là một tiêu điểm INNODB vì nó là công cụ mặc định. Và khi không được đề cập rõ ràng trong sổ tay hướng dẫn trong một số hệ thống phân cấp tài liệu, nó sẽ được giả định.

Lưu ý, không có gì liền kề về id trong liên kết ví dụ của tôi. Có nghĩa là, đừng siêu tập trung vào type=range trong đầu ra EXPLAIN của nó. Tốc độ đạt được thông qua Trình tối ưu hóa (CBO).

cardinality trong ví dụ của tôi là rất cao (4,3 Triệu). Số lượng id mục tiêu tương đối thấp (1000). Chỉ mục được sử dụng.

Tình huống của bạn có thể ngược lại:số lượng bản số của bạn có thể cực kỳ thấp, chẳng hạn như 3, và trình tối ưu hóa quyết định từ bỏ việc sử dụng chỉ mục.

Để kiểm tra chỉ mục của bạn cardinality , hãy xem Trang thủ công HIỂN THỊ Cú pháp INDEX .

Một cuộc gọi đơn giản như:

show index from ratings;

+---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table   | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| ratings |          0 | PRIMARY  |            1 | id          | A         |     4313544 |     NULL | NULL   |      | BTREE      |         |               |
+---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. # 1115 - Bộ ký tự không xác định:'utf8mb4'

  2. Làm thế nào tôi có thể đưa ra hai điều kiện trong điều khoản có

  3. Cập nhật hai hàng khác nhau trong một dòng SQL

  4. Hiểu các chế độ xem trong SQL

  5. Cho phép thực thi nhiều câu lệnh trong khi thực thi qua sqlalchemy