Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PostgreSQL > Создать составной индекс по bigint и int[]


Автор: polin11 16.7.2024, 00:05
Использую СУБД Postgresql.
Есть поле Document (bigint) ид. документа
Types (int[]) массив целых числе.
Для запроса вида
Код

Select *
From "Data"
where "Document" = 1 and ("Types" && array[1, 2])


Код

Select *
From "Data"
where "Document" = 1 and "Types"[1] =1
union
Select *
From "Data"
where "Document" = 1 and "Types"[1] = 2

Код


Select *
From "Data"
where "Document" = 1 and ("Types"[1] = 1 or "Types"[1] = 2)


Хочется сделать составной индекс по Document и Types, как лучше сделать такой индекс, и вообще можно такое сделать? 

Автор: LSD 17.7.2024, 10:53
Во первых
Код

("Types"[1] = 1 or "Types"[1] = 2)

Почему такой странный запрос? Почему берется элемент с индексом 1 и сравнивается?
Логичней бы выглядело
Код

2 = ANY("Types")




Во вторых
Цитата(polin11 @  16.7.2024,  01:05 Найти цитируемый пост)
Есть поле Document (bigint) ид. документа

если это айди, то у этого индекса и так уже максимальная селективность и вторичный индекс просто не нужен. Или это все таки не первичный ключ, а что-то другое?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)