Будет ли индекс GIN использоваться с любым оператором sql в PostgreSql? - PullRequest
0 голосов
/ 14 мая 2018

Мне интересно, будет ли PostgreSql использовать индекс GIN для оператора ANY с целочисленным массивом.Допустим, у меня есть таблица tree_nodes, которая содержит id с типом int и path с типом int[].Простой пример:

enter image description here

Будет ли использоваться индекс GIN при написании выбора select * from tree_nodes where :id = any(path) и, например, :id = 2.

Я знаю, что в случае @> будет, но я верю, что в моем случае оператор ANY будет более эффективным, чем @>

1 Ответ

0 голосов
/ 14 мая 2018

Индекс GIN нельзя использовать с =ANY.

Что вы можете сделать, это использовать оператор <@ с одноэлементным массивом:

SELECT * FROM tree_nodes
WHERE ARRAY[$1] <@ path;

Здесь можно использовать индекс GIN.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...