?
А отчего ж нет?
У меня просто композитные первичные ключи. Я просто ещё не пробовал такое делать
От того, что на них не бывает UNIQUE? (Только имитацыя)
А искать то надо по всем столбцам, которые входят в "композитный" первичный ключ?
А что значит имитация ? Констрейнт будет вообще работать или там коллизии могут возникнуть ?
Не совсем понял, о чем вы. См. пример.
Там же будет 2 индекса в итоге
Для таблицы test_comp (ваш случай) — один GIN индекс. Он поддерживает многоколоночные индексы.
Ах вот оно как ) спс, понял теперь. Нужно просто пересоздать первичные ключи получается после включения extention соответствующего ? Просто сейчас у меня по два индекса на каждое поле-участнике в первичном ключе
Не понял. Зачем что-то "пересоздавать"? Если только там изначально что-то неверно. >Просто сейчас у меня по два индекса на каждое поле-участнике в первичном ключе Например это. Для справки: 1. btree и GIN индексы (в частности) поддерживают многоколоночные варианты (т.е. "единый" индекс сразу по нескольким колонкам); 2. Когда вы создаете PK (хоть композитный, хоть какой) — под капотом там уже создается btree индекс, и свой делать не требуется. Очевидно, ограничение UNIQUE тоже "встроено" по определению первичного ключа. Таким образом, у вас просто должны быть PK + один триграммный индекс на таблицу (в контексте описываемой задачи).
Не, все норм, я думал изначально, что одного индекса будет достаточно. Но на триграммный индекс просто можно добавить. Я думал просто съэкономить ресурсы и использовать только триграмные индексы
НЯП, на EXCLUDE не работают foreign keys, ещё вроде ON CONFLICT.
>Я думал просто съэкономить ресурсы и использовать только триграмные индексы Не выйдет, т.к. оператор равенства (и проч.) в gin_trgm_ops отсутствует (по крайней мере без изменения исходных кодов PostgreSQL и/или расширений к нему у вас просто нет выбора в рамках PK).
Разве отсутствует? Впрочем, GIN всё равно не поддержывает EXCLUDE.
Прошу прощения, в PostgreSQL 14 действительно появился и оператор равенства, но его одного всё равно недостаточно (нет операторов неравенства и проч.). И, как говорил выше, всё равно изменить тип индекса для PK не представляется возможным, насколько мне известно.
Обсуждают сегодня