Вход | Регистрация
 
Информационные технологии :: Администрирование

Postgres 9.6. Индекс полнотекстового поиска не действует.

Postgres 9.6. Индекс полнотекстового поиска не действует.
Я
   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 работал быстро?
   GANR
 
1 - 22.03.20 - 12:54
В итоге вылечил увеличив статистику.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.