GIN 인덱스의 문제점은 무엇입니까? SEQ 스캔은 피할 수 없습니까?
create table mytable(hash char(40), title varchar(500));
create index name_fts on mytable using gin(to_tsvector('english', 'title'));
CREATE UNIQUE INDEX md5_uniq_idx ON mytable(hash);
내가 제목을 조회 나는이 같은 테이블을 만든
,
test=# explain analyze select * from mytable where to_tsvector('english', title) @@ 'abc | def'::tsquery limit 10;
QUERY PLAN
--------------------------------------------------------------------------------------------------------------------
Limit (cost=0.00..277.35 rows=10 width=83) (actual time=0.111..75.549 rows=10 loops=1)
-> Seq Scan on mytable (cost=0.00..381187.45 rows=13744 width=83) (actual time=0.110..75.546 rows=10 loops=1)
Filter: (to_tsvector('english'::regconfig, (title)::text) @@ '''abc'' | ''def'''::tsquery)
Rows Removed by Filter: 10221
Planning time: 0.176 ms
Execution time: 75.564 ms
(6 rows)
인덱스는 사용되지 않습니다. 어떤 아이디어? 10m 행이 있습니다.
전체 텍스트 검색이 작동하는 방식이 아닙니다. – Phill
@Phill 당신은 정교 할 수 있습니까? – daisy
쿼리가 실행 시간의 값을 변환합니다. 느린 속도로 인덱스를 사용하지 않습니다. 테이블의 별도 열에 tsvector를 저장해야합니다. – Phill