Postgres 9.6. Индекс полнотекстового поиска не действует.
☑
0
GANR
02.03.20
✎
16:08
Тестирование выявило медленный запрос к большой таблице. Поле data имеет тип JSONB, id – bigint.
SELECT * FROM svjul svjul
WHERE to_tsvector('russian', (svjul.data)::TEXT) @@ to_tsquery('russian', '55555:*')
ORDER BY svjul.id ASC LIMIT 20 OFFSET 0
По таблице построен индекс, но он не действует
CREATE INDEX dict_svjul_to_tsvector_idx
ON public.svjul USING gin
(to_tsvector('russian'::regconfig, data::text))
TABLESPACE pg_default;
Выяснил, что без ORDER BY svjul.id ASC индекс срабатывает. Попробовал сделать так
CREATE INDEX idx_svjul_to_tsvector_id
ON public.svjul USING gin
(to_tsvector('russian'::regconfig, data::text), id)
TABLESPACE pg_default;
СУБД ругается, что gin по bigint нельзя строить
Как можно построить индекс, чтобы исходный запрос с ORDER BY svjul.id ASC работал быстро?
1
GANR
22.03.20
✎
12:54
В итоге вылечил увеличив статистику.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой