Я пытаюсь добавить индекс GIN, который включает UUID в базу данных Postgres 9.6.Технически это составной индекс, с поддержкой составного GIN из плагина btree_gin.
Я пытаюсь создать индекс с помощью этого оператора:
CREATE EXTENSION btree_gin;
CREATE INDEX ix_tsv ON text_information USING GIN (client_id, text_search_vector);
, но получаю эту ошибку:
ERROR: data type uuid has no default operator class for access method "gin"
HINT: You must specify an operator class for the index or define a default operator class for the data type.
client_id
isтип данных uuid
и text_search_vector
является tsvector
.Я не думаю, что составной фактор / btree_gin действительно важен, так как я получаю ту же ошибку, пытаясь создать индекс только на client_id
, но, надеюсь, если есть решение, то оно будет работать стакже составной индекс.
Я нашел Индекс GIN PostgreSQL для массива uuid , что, по-видимому, предполагает, что это возможно (если можно создать массив UUID, то, конечно, отдельный UUIDосуществимо).Тем не менее, решение было довольно непрозрачным для меня - не сразу понятно, как изменить это решение для поддержки одного UUID.
Я бы предпочел решение, которое не включает приведение UUID к другому типу в индексе или в другом столбце, так как я бы не стал писать специализированные запросы с приведением в них (мы используем django ORMгенерировать запросы атм.)