官术网_书友最值得收藏!

Speed up LIKE queries

LIKE queries definitely cause some of the worst performance problems faced by people around the globe these days. In most database systems, LIKE is pretty slow and requires a sequential scan. In addition to that, end users quickly figure out that a fuzzy search will in many cases return better results than precise queries. A single type of LIKE query on a large table can, therefore, often cripple the performance of an entire database server if it is called often enough.

Fortunately, PostgreSQL offers a solution to the problem and the solution happens to be installed already:

test=# explain SELECT * FROM t_location WHERE name LIKE '%neusi%'; 
QUERY PLAN
-----------------------------------------------------------------
Bitmap Heap Scan on t_location
(cost=4.33..19.05 rows=24 width=13)
Recheck Cond: (name ~~ '%neusi%'::text)
-> Bitmap Index Scan on idx_trgm (cost=0.00..4.32 rows=24 width=0)
Index Cond: (name ~~ '%neusi%'::text)
(4 rows)

The trigram index deployed in the previous section is also suitable to speed up LIKE. Note that the % symbols can be used at any point in the search string. This is a major advantage over standard B-trees, which just happen to speed up wild cards at the end of the query.

主站蜘蛛池模板: 八宿县| 沈阳市| 微博| 高雄市| 石台县| 内乡县| 太湖县| 上饶县| 祁东县| 武陟县| 崇礼县| 西乌珠穆沁旗| 溆浦县| 荆州市| 龙江县| 蓝山县| 闻喜县| 兴海县| 桦甸市| 宜州市| 扎兰屯市| 宁乡县| 邢台市| 广州市| 昌图县| 广安市| 绿春县| 铜川市| 伊吾县| 随州市| 连州市| 弥渡县| 江源县| 社旗县| 日照市| 海原县| 铜川市| 同德县| 剑阁县| 阿坝县| 连南|