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

Lập chỉ mục gì trên các truy vấn có nhiều cột trong mệnh đề WHERE

Bạn phải tìm ra đâu là WHERE các mệnh đề bạn sẽ sử dụng với truy vấn này, tần suất xuất hiện của mỗi mệnh đề và mức độ chọn lọc của từng điều kiện.

  • Không lập chỉ mục cho các truy vấn hiếm khi xảy ra trừ khi bạn phải làm như vậy.

  • Sử dụng chỉ mục nhiều cột, bắt đầu bằng những cột sẽ xuất hiện trong = so sánh.

  • Liên quan đến thứ tự của các cột trong chỉ mục nhiều cột, hãy bắt đầu với những cột sẽ được sử dụng trong truy vấn của chính chúng (chỉ mục có thể được sử dụng cho truy vấn chỉ với một số cột của nó, miễn là chúng nằm ở đầu chỉ mục).

  • Bạn có thể bỏ qua các cột có độ chọn lọc thấp, như gender .

Ví dụ:với các truy vấn ở trên của bạn, nếu tất cả chúng đều thường xuyên và tất cả các cột đều có chọn lọc, thì các chỉ mục này sẽ tốt:

... ON apartments (city_id, rooms, size)

... ON apartments (area_id, ad_type, price)

... ON apartments (area_id, ad_type, published_at)

Các chỉ mục này cũng có thể được sử dụng cho WHERE mệnh đề chỉ có area_id hoặc city_id trong họ.

Thật là tệ khi có quá nhiều chỉ mục.

Nếu phương pháp trên sẽ dẫn đến quá nhiều chỉ mục, ví dụ:vì người dùng có thể chọn các cột tùy ý cho WHERE , tốt hơn là lập chỉ mục các cột riêng lẻ hoặc đôi khi các cặp cột thường xuyên đi cùng nhau.

Bằng cách đó, PostgreSQL có thể chọn quét chỉ mục bitmap để kết hợp nhiều chỉ mục cho một truy vấn. Điều đó kém hiệu quả hơn so với quét chỉ mục thông thường , nhưng thường tốt hơn quét tuần tự .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgresql - lấy hàng datetime gần nhất so với giá trị datetime nhất định

  2. CHÈN NHÓM CHỌN THEO:nhiều cột mục tiêu hơn lỗi biểu thức

  3. Chuyển đổi động cho giá trị hàng không xác định thành tên cột trên postgres

  4. Cập nhật với hàm được gọi một lần cho mỗi hàng trong Postgres 8.4

  5. Postgres:lập chỉ mục về độ tương tự cosine của mảng float cho tìm kiếm từ một đến nhiều