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

Chỉ số MySQL và thứ tự

Thứ tự lập chỉ mục quan trọng khi các điều kiện truy vấn của bạn chỉ áp dụng cho PHẦN của chỉ mục. Cân nhắc:

  1. SELECT * FROM table WHERE first_name="john" AND last_name="doe"

  2. SELECT * FROM table WHERE first_name="john"

  3. SELECT * FROM table WHERE last_name="doe"

Nếu chỉ mục của bạn là (first_name , last_name ) các truy vấn 1 và 2 sẽ sử dụng nó, truy vấn 3 thì không. Nếu chỉ mục của bạn là (last_name , first_name ) truy vấn 1 và 3 sẽ sử dụng nó, truy vấn số 2 thì không. Thay đổi thứ tự điều kiện trong mệnh đề WHERE không có hiệu lực trong cả hai trường hợp.

Thông tin chi tiết có tại tại đây

Cập nhật :
Trong trường hợp ở trên không rõ ràng - MySQL chỉ có thể sử dụng một chỉ mục nếu các cột trong điều kiện truy vấn tạo thành tiền tố ngoài cùng bên trái của chỉ mục. Không thể sử dụng truy vấn số 2 ở trên (last_name , first_name ) lập chỉ mục vì nó chỉ dựa trên first_namefirst_name KHÔNG phải là tiền tố ngoài cùng bên trái của (last_name , first_name ) chỉ mục.

Thứ tự của các điều kiện TRONG VÒNG truy vấn không quan trọng; truy vấn số 1 ở trên sẽ có thể sử dụng (last_name , first_name ) chỉ mục tốt vì các điều kiện của nó là first_namelast_name và, khi kết hợp với nhau, chúng sẽ tạo thành tiền tố ngoài cùng bên trái của (last_name , first_name ) chỉ mục.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL tải dữ liệu trong tệp tin - tăng tốc?

  2. RuntimeError:OperationalError:(2003, Không thể kết nối với máy chủ MySQL trên 'Địa chỉ IP của phiên bản'

  3. Triển khai MySQL Server + DB với ứng dụng .Net

  4. MySQL / Lỗi tệp ghi (Mã lỗi 28)

  5. PDO Chèn mảng sử dụng khóa làm tên cột