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

Thứ tự các trường của chỉ mục nhiều cột trong MySQL Matter

Khi thảo luận về các chỉ mục nhiều cột, tôi sử dụng một phép tương tự với một danh bạ điện thoại. Một danh bạ điện thoại về cơ bản là một chỉ mục về họ, sau đó là tên. Vì vậy, thứ tự sắp xếp được xác định bởi "cột" nào trước. Tìm kiếm thuộc một số danh mục:

  1. Nếu bạn tra cứu những người có họ là Smith, bạn có thể dễ dàng tìm thấy họ vì cuốn sách được sắp xếp theo họ.

  2. Nếu bạn tra cứu những người có tên là John, thì danh bạ điện thoại không giúp ích được gì vì các Johns nằm rải rác khắp cuốn sách. Bạn phải quét toàn bộ danh bạ điện thoại để tìm tất cả.

  3. Nếu bạn tra cứu những người có họ cụ thể là Smith và họ cụ thể là John, cuốn sách sẽ hữu ích vì bạn tìm thấy các Smith được sắp xếp cùng nhau và trong nhóm Smith đó, các Johns cũng được tìm thấy theo thứ tự được sắp xếp.

Nếu bạn có một danh bạ điện thoại được sắp xếp theo tên rồi theo họ, việc sắp xếp sách sẽ hỗ trợ bạn trong các trường hợp # 2 và # 3 ở trên, nhưng không phải trường hợp # 1.

Điều đó giải thích các trường hợp tìm kiếm giá trị chính xác, nhưng nếu bạn đang tìm kiếm theo phạm vi giá trị thì sao? Giả sử bạn muốn tìm tất cả những người có tên là John và họ bắt đầu bằng 'S' (Smith, Saunders, Staunton, Sherman, v.v.). Các Johns được sắp xếp theo 'J' trong mỗi họ, nhưng nếu bạn muốn tất cả Johns cho tất cả các họ bắt đầu bằng 'S', các Johns không được nhóm lại với nhau. Họ lại phân tán, vì vậy bạn sẽ phải quét qua tất cả các tên có họ bắt đầu bằng 'S'. Trong khi nếu danh bạ điện thoại được sắp xếp theo tên rồi theo họ, bạn sẽ tìm tất cả các Johns lại với nhau, thì trong Johns, tất cả các họ 'S' sẽ được nhóm lại với nhau.

Vì vậy, thứ tự của các cột trong một chỉ mục nhiều cột chắc chắn rất quan trọng. Một loại truy vấn có thể cần một thứ tự cột nhất định cho chỉ mục. Nếu bạn có một số loại truy vấn, bạn có thể cần một số chỉ mục để trợ giúp chúng, với các cột theo thứ tự khác nhau.

Bạn có thể đọc bản trình bày của tôi Thực sự là như thế nào để biết thêm thông tin.



  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 để đặt dấu thời gian là một truy vấn chậm?

  2. PDO từ chối xóa một hàng dữ liệu (trong bảng cụ thể)

  3. Có giảm hiệu suất nếu có quá nhiều cột trong một bảng không?

  4. LỖI! Không thể tìm thấy trình quản lý MySQL hoặc tệp PID máy chủ! QNAP

  5. Làm cách nào để chọn toàn bộ hàng có ID lớn nhất trong bảng?