Имеется список массивов в json. Нужно найти записи , содержащие в массиве заданный элемент.
Пример:
CREATE TABLE public.test_arr
(
id serial,
arr_ids jsonb
)
CREATE INDEX test_arr_index ON public.test_arr USING gin(arr_ids)
insert into public.test_arr(arr_ids) values('["a","b","c"]')
insert into public.test_arr(arr_ids) values('["a","d","m"]')
insert into public.test_arr(arr_ids) values('["c"]')
select * from (
select jsonb_array_elements(arr_ids) val , *
from test_arr
)t
where val = '"c"'
На больших объемах ищет очень долго. Видимо селект неоптимальный и не подключается индекс.
Можно ли ускорить выборку?