Добрый день, имеется следующая задача:
в таблице имеется JSONB поле, для него создан GIN индекс, в этом поле хранятся атрибуты продуктов:
{"attrName1":"value1", "attrName2":"value2"}
кол-во атрибутов и их названия заведомо неизвестны.
Необходимо организовать фильтр по атрибутам, пользователь выбирает галочками несколько значений для произвольного атрибута
attrName1("value1", "value2", "value3",...)
.
Теперь собственно вопрос, как составить грамотно запрос, чтобы выборка происходила с учетом индексов?
... WHERE attributes->>'attrName1' IN ("value1","value2",...)
- ищет без индексов, если добавить
attributes->>'attrName1'
в индекс то ищет с индексами, но я не знаю наперед какие атрибуты будут,
...WHERE attributes @> '{"attrName1":"value1"}'
- ищет с индексами но только по одному значению.
С PostgreSQL работаю совсем недавно, но в документации по своему вопросу ничего не нашел, а может плохо искал...