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ư =
, <
, <=
, >
, >=
, <>
, BETWEEN
và IN
. 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.