[英]How to speed up pg_trgm?
Create table: 创建表:
CREATE TABLE public.personal
(
id bigserial NOT NULL PRIMARY KEY,
first_name character varying(255) NOT NULL,
last_name character varying(255),
middle_name character varying(255),
deleted integer NOT NULL DEFAULT 0
);
Query: 查询:
select last_name, first_name, middle_name, similarity(concat_ws(' ', last_name, first_name, middle_name), 'Smit') AS sml
from personal ORDER BY sml DESC LIMIT 100
How to speed up this query? 如何加快此查询?
See the documentation : 请参阅文档 :
CREATE INDEX ON personal USING gist
((coalesce(last_name, '') || ' ' ||
coalesce(first_name, '') || ' ' ||
coalesce(middle_name, '')) gist_trgm_ops);
It might be faster to query like this: 这样查询可能会更快:
SELECT last_name, first_name, middle_name,
(coalesce(last_name, '') || ' ' ||
coalesce(first_name, '') || ' ' ||
coalesce(middle_name, '') <-> 'Smit') AS dist
FROM personal
ORDER BY dist LIMIT 100;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.