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
В итоге вылечил увеличив статистику.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший