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

Tôi nên sử dụng chỉ mục nào khi sử dụng JOIN trên PRIMARY KEY

Có hai chiến lược lập chỉ mục tiềm năng ở đây, tùy thuộc vào bảng nào trong số hai bảng xuất hiện ở phía bên trái của phép nối bên trong (một trong hai bảng có thể xuất hiện ở cả hai phía của phép nối). Cho rằng HotelRoom bảng có thể chứa nhiều bản ghi hơn Hotel bàn, tôi khuyên bạn nên đặt Hotel bảng ở bên trái của phép nối. Điều này có nghĩa là Hotel bảng sẽ được quét và chỉ mục được sử dụng để tham gia vào HotelRoom . Sau đó, chúng tôi có thể thử sử dụng chỉ mục sau trên HotelRoom :

CREATE INDEX hotel_room_idx ON HotelRoom (HotelId, Deleted, Enabled, Name, RoomId);

Điều này sẽ tăng tốc độ tham gia đáng kể, bao gồm WHERE và cũng bao gồm tất cả các cột trong phần chọn trên HotelRoom . Lưu ý rằng chỉ mục được đơn giản hóa sau đây cũng có thể rất hiệu quả:

CREATE INDEX hotel_room_idx ON HotelRoom (HotelId, Deleted, Enabled);

Điều này chỉ bao gồm tham gia và WHERE nhưng MySQL vẫn có thể chọn sử dụng nó.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tham dự Streak MySQL Query

  2. Cập nhật nhiều hàng với nhiều mệnh đề 'where' cho mỗi hàng riêng lẻ

  3. bảng phẳng - quyền truy cập bị từ chối

  4. Bản dịch Oracle user_indexes sang MySQL

  5. MySQL - Nhóm theo Thứ tự theo DESC