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

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.

主站蜘蛛池模板: 云和县| 宁晋县| 高密市| 和静县| 舟曲县| 大兴区| 张北县| 河北区| 白水县| 安岳县| 绥宁县| 高唐县| 沾化县| 邢台市| 屏山县| 巴彦淖尔市| 莱西市| 司法| 洪湖市| 崇礼县| 高安市| 靖州| 延津县| 遵义市| 顺平县| 余庆县| 尤溪县| 普安县| 南康市| 行唐县| 惠水县| 西和县| 三明市| 邵阳市| 延安市| 平乡县| 特克斯县| 闸北区| 桐梓县| 万盛区| 青海省|