時間:2024-02-07 12:09作者:下載吧人氣:21
任何一個關系型數據庫關于模糊匹配(like)的優化都是一件痛苦的事,相對而言,諸如like ‘abc%’之類的還好一點,可以通過創建索引來優化,但對于like ‘c%’之類的,真的就沒有辦法了。
這里介紹一種postgresql關于like ‘c%’的優化方法,是基于全文檢索的特性來實現的。
postgres=# create table ts(id int,name text);
CREATE TABLE
postgres=# d ts
Table “public.ts”
Column | Type | Modifiers
——–+———+———–
id | integer |
name | text |
postgres=# insert into ts select n,n||’_pjy’ from generate_series(1,2000) n;
INSERT 0 2000
postgres=# insert into ts select n,n||’_mdh’ from generate_series(1,2000000) n;
INSERT 0 2000000
postgres=# insert into ts select n,n||’_lmm’ from generate_series(1,2000000) n;
INSERT 0 2000000
postgres=# insert into ts select n,n||’_syf’ from generate_series(1,2000000) n;
INSERT 0 2000000
postgres=# insert into ts select n,n||’_wbd’ from generate_series(1,2000000) n;
INSERT 0 2000000
postgres=# insert into ts select n,n||’_hhh’ from generate_series(1,2000000) n;
INSERT 0 2000000
postgres=# insert into ts select n,n||’_sjw’ from generate_series(1,2000000) n;
INSERT 0 2000000
postgres=# insert into ts select n,n||’_jjs’ from generate_series(1,2000000) n;
INSERT 0 2000000
postgres=# insert into ts select n,n||’_ymd’ from generate_series(1,2000000) n;
INSERT 0 2000000
postgres=# insert into ts select n,n||’_biu’ from generate_series(1,2000000) n;
INSERT 0 2000000
postgres=# insert into ts select n,n||’_dfl’ from generate_series(1,2000000) n;
INSERT 0 2000000
postgres=# select count(*) from ts;
count
———-
20002000
(1 row)
網友評論