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

Chỉ mục MySQL cho MIN và MAX

SELECT MIN(b), MAX(b) FROM tbl WHERE a = 12;

yêu

INDEX(a, b)

cả hai cột, theo thứ tự đó.

Truy vấn tìm kiếm trong chỉ mục cho a = 12 , lấy (a,b) đầu tiên ghép nối để lấy MIN(b) và lấy cặp cuối cùng để lấy MAX(b) .

Tuyên bố về "thay thế bằng một hằng số" gây nhầm lẫn vì nó đi quá sâu vào chi tiết về cách đầu tiên nó tìm ra cách thực hiện truy vấn (điều này xảy ra với giá trị tối thiểu và tối đa), sau đó tiến hành thực hiện những gì còn lại truy vấn (không còn gì).

Nói chung hơn, chỉ số tối ưu là thường một cái bắt đầu bằng tất cả WHERE các cột được so sánh với các hằng số có = . Sau đó, nó trở nên phức tạp, vì vậy hãy để tôi đưa ra một mẹo khác:

Chỉ mục "bao trùm" là chỉ mục có tất cả các cột được đề cập trong SELECT (ab trong ví dụ của tôi).

Xin lỗi, tôi có vẻ không hiểu rõ hơn sách hướng dẫ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. Tách một tệp mysqldump với nhiều cơ sở dữ liệu, theo cơ sở dữ liệu

  2. Đặt cơ sở dữ liệu MySQL dưới quyền kiểm soát phiên bản?

  3. Tự động loại bỏ các truy vấn đang chạy dài (MySql), Apache Tomcat DataSource

  4. Nhóm các kết quả mysql theo danh mục và hiển thị chúng thành các nhóm theo từng danh mục

  5. Quản lý hàng tồn kho với các tùy chọn cổ phiếu