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 работал быстро?
|
|