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

Truy vấn MySql đơn giản của tôi không sử dụng chỉ mục

Tôi đoán rằng bạn có ít hàng trong bảng 'nhận xét', đây là lý do tại sao MySQL thực hiện quét toàn bộ bảng thay vì sử dụng chỉ mục trong truy vấn đầu tiên của bạn. Người ta ước tính rằng chi phí quét toàn bộ bảng có thể thấp hơn so với lần đầu tiên khớp chỉ mục và sau đó tra cứu các hàng.

Trong truy vấn thứ hai của bạn đang sử dụng chỉ mục vì có thể lấy trực tiếp tất cả các cột của truy vấn (cột 'id') từ chỉ mục mà không cần phải tra cứu các hàng trong bảng sau khi khớp với chỉ mục. Đây là ý nghĩa của thông tin phụ "Sử dụng chỉ mục".

Hãy thử nếu với một số lượng đáng kể các hàng trong 'nhận xét' MySQL vẫn sử dụng quét toàn bộ, tôi nghĩ rằng đó sẽ là một hành vi lạ. Trên thực tế, tôi đã thử nghiệm giống hệt như vậy trong MySQL phiên bản 5.1 và nó luôn sử dụng 'chỉ mục' ngay cả khi có ít hàng.



  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 để lấy một truy vấn SQL thô, đã biên dịch từ một biểu thức SQLAlchemy?

  2. Xác thực biểu mẫu

  3. Cột không xác định {0} trong mệnh đề trên

  4. Hàm MySQL DEGREES () - Chuyển đổi từ Radian sang Độ

  5. Hiển thị hình ảnh được lưu trữ trong cơ sở dữ liệu MySql ở định dạng BLOB sử dụng c #