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

Tại sao truy vấn này lại sử dụng where thay vì index?

Kết quả của EXPLAIN đôi khi có thể gây hiểu lầm.

Ví dụ:filesort không liên quan gì đến tệp, using where không có nghĩa là bạn đang sử dụng WHERE mệnh đề và using index có thể hiển thị trên các bảng mà không có một chỉ mục nào được xác định.

Using where chỉ có nghĩa là có một số mệnh đề hạn chế trên bảng (WHERE hoặc ON ), và không phải tất cả bản ghi sẽ được trả lại. Lưu ý rằng LIMIT không được tính là một điều khoản hạn chế (mặc dù nó có thể như vậy).

Using index có nghĩa là tất cả thông tin được trả về từ chỉ mục mà không cần tìm kiếm các bản ghi trong bảng. Điều này chỉ có thể thực hiện được nếu tất cả các trường mà truy vấn yêu cầu đều được bao phủ bởi chỉ mục.

Vì bạn đang chọn * , điều này là không thể. Các trường ngoài category_id , board_id , displayorder không nằm trong chỉ mục và cần được tra cứu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tùy chọn ON DELETE CASCADE không được tạo khi sử dụng tạo lược đồ ddl trên Mysql

  2. Điều kiện cuộc đua với mysql_last_id ()

  3. Chọn giá trị tối thiểu cho mỗi mục trong MySQL

  4. Biểu mẫu PHP trả về Thông báo:Chuyển đổi mảng thành chuỗi

  5. Làm cách nào để tạo một trang web mới từ một mục nhập cơ sở dữ liệu do người dùng gửi?