Postgres 10 hoặc mới hơn
btree_gist
bây giờ cũng bao gồm kiểu dữ liệu uuid
, như Paul đã nhận xét
. (Và một số kiểu dữ liệu khác, đặc biệt là tất cả enum
các loại.)
Bây giờ tất cả những gì bạn cần làm:cài đặt tiện ích mở rộng một lần cho mỗi cơ sở dữ liệu:
CREATE EXTENSION btree_gist;
Sau đó, chỉ mục của bạn sẽ hoạt động.
Có liên quan:
- Ràng buộc loại trừ trên cột chuỗi bit với toán tử AND bit
- Tạo chỉ mục đa cột trong PostgreSQL, chứa cả cột vô hướng và cột mảng
Postgres 9.6 trở lên
(Câu trả lời gốc.)
Thông thường, tôi sẽ đề xuất mô-đun bổ sung btree_gist
, nhưng loại uuid
là không được bao phủ bởi nó.
Về lý thuyết, vì UUID là a 128-bit quantity
( theo tài liệu
), cách hiệu quả nhất là chuyển đổi nó thành hai bigint
hoặc float8
cho mục đích của chỉ mục. Nhưng không có phôi nào trong số này được xác định trong Postgres tiêu chuẩn.
Tôi đã tìm thấy một
Để sử dụng chỉ mục chức năng này, các truy vấn phải khớp với biểu thức đó. Bạn có thể sử dụng viết tắt
Ngoài ra:không sử dụng giá trị
Câu hỏi là: tại sao bạn có cần chỉ mục GiST không. Giải pháp tốt nhất phụ thuộc vào mục tiêu. "value"::text
trong các truy vấn (nhưng không có trong định nghĩa chỉ mục mà không thêm các dấu ngoặc đơn). value
dưới dạng tên cột, nó là một từ dành riêng trong SQL chuẩn .