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

Chỉ số GIST của Postgres so với Btree

Bạn phải sử dụng GiST nếu bạn muốn sử dụng bất kỳ phương thức chỉ mục nào khác với các chỉ mục b-tree thông thường (hoặc chỉ mục băm, nhưng chúng thực sự không nên được sử dụng). Chỉ mục PostGIS yêu cầu GiST.

Chỉ mục cây B chỉ có thể được sử dụng cho các hoạt động cơ bản liên quan đến bình đẳng hoặc sắp xếp, như = , < , <= , > , >= , <> , BETWEENIN . Mặc dù bạn có thể tạo chỉ mục b-tree trên đối tượng geomtery (điểm, vùng, v.v.), nó chỉ có thể thực sự được sử dụng để bình đẳng như so sánh thứ tự như > nói chung là vô nghĩa đối với các đối tượng như vậy. Chỉ mục GiST được yêu cầu để hỗ trợ các so sánh phức tạp và tổng quát hơn như "chứa", "giao nhau", v.v.

Bạn có thể sử dụng btree_gist phần mở rộng để kích hoạt lập chỉ mục b-tree cho GiST. Nó chậm hơn đáng kể so với các chỉ mục b-tree thông thường, nhưng cho phép bạn tạo chỉ mục nhiều cột chứa cả các loại chỉ GiST và các loại thông thường như text , integer , v.v.

Trong những tình huống này, bạn thực sự cần sử dụng explain analyze ( giải thích.depesz.com hữu ích cho việc này) để kiểm tra cách Pg sử dụng các chỉ mục khác nhau và kết hợp các chỉ mục mà bạn tạo. Hãy thử các tổ hợp cột khác nhau trong các chỉ mục nhiều cột và xem liệu hai hoặc nhiều chỉ mục riêng biệt có hiệu quả hơn không.

Tôi thực sự nghi ngờ rằng bạn sẽ nhận được kết quả tốt nhất với chỉ mục GiST nhiều cột trong trường hợp này, nhưng tôi muốn thử một số kết hợp khác nhau của chỉ mục và chuỗi ký tự cột chỉ mục để xem.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Quan hệ được chuyển đến # hoặc phải tương thích về cấu trúc. Các giá trị không tương thích:[:reference]

  2. Các hàm PL / pgSQL:Cách trả về một bảng bình thường có nhiều cột bằng cách sử dụng câu lệnh thực thi

  3. Chuyển kết quả truy vấn cơ sở dữ liệu sang biểu đồ jQuery Sparkline bằng PHP

  4. Các chuỗi không bị ảnh hưởng bởi các giao dịch?

  5. số nguyên ngoài phạm vi và dung lượng đĩa còn lại quá nhỏ để chuyển đổi id thành bigint và các giải pháp khác