亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > PostgreSQL > 正文

pgsql查詢優化之模糊查詢實例詳解

2020-01-31 15:20:39
字體:
來源:轉載
供稿:網友

前言

一直以來,對于搜索時模糊匹配的優化一直是個讓人頭疼的問題,好在強大pgsql提供了優化方案,下面就來簡單談一談如何通過索引來優化模糊匹配

案例

我們有一張千萬級數據的檢查報告表,需要通過檢查報告來模糊搜索某個條件,我們先創建如下索引:

CREATE INDEX lab_report_report_name_index ON lab_report USING btree (report_name);

然后搜個簡單的模糊匹配條件如 LIKE "血常規%",可以發現查詢計劃生成如下,索引并沒有被使用上,這是因為傳統的btree索引并不支持模糊匹配

查閱文檔后發現,pgsql可以在Btree索引上指定操作符:text_pattern_ops、varchar_pattern_ops和bpchar_pattern_ops,它們分別對應字段類型text、varchar和char,官方解釋為“它們與默認操作符類的區別是值的比較是嚴格按照字符進行而不是根據區域相關的排序規則。這使得這些操作符類適合于當一個數據庫沒有使用標準“C”區域時被使用在涉及模式匹配表達式(LIKE或POSIX正則表達式)的查詢中。”, 有些抽象,我們先試試看。創建如下索引并查詢剛才的條件 LIKE"血常規%":(參考pgsql的文檔https://www.postgresql.org/docs/10/indexes-opclass.html)

CREATE INDEX lab_report_report_name_index ON lab.lab_report (report_name varchar_pattern_ops);

發現確實可以走索引掃描 ,執行時間也從213ms優化到125ms,但是,如果搜索LIKE "%血常規%"就又會走全表掃描了! 這里我們引入本篇博客的主角"pg_trgm"和"pg_bigm"。

創建這兩個索引前分別需要引入如下兩個擴展包 :

CREATE EXTENSION pg_trgm;CREATE EXTENSION pg_bigm;

這兩個索引的區別是:“pg_tigm”為pgsql官方提供的索引,"pg_tigm"為日本開發者提供。下面是詳細的對比:(參考pg_bigm的文檔http://pgbigm.osdn.jp/pg_bigm_en-1-2.html)

Comparison with pg_trgm

Thepg_trgmcontrib module which provides full text search capability using 3-gram (trigram) model is included in PostgreSQL. The pg_bigm was developed based on the pg_trgm. They have the following differences:

Functionalities and Features pg_trgm pg_bigm
Phrase matching method for full text search 3-gram 2-gram
Available index GIN and GiST GIN only
Available text search operators LIKE (~~), ILIKE (~~*), ~, ~* LIKE only
Full text search for non-alphabetic language
(e.g., Japanese)
Not supported (*1) Supported
Full text search with 1-2 characters keyword Slow (*2) Fast
Similarity search Supported Supported (version 1.1 or later)
Maximum indexed column size 238,609,291 Bytes (~228MB) 107,374,180 Bytes (~102MB)

(*1) You can use full text search for non-alphabetic language by commenting out KEEPONLYALNUM macro variable in contrib/pg_trgm/pg_trgm.h and rebuilding pg_trgm module. But pg_bigm provides faster non-alphabetic search than such a modified pg_trgm.

(*2) Because, in this search, only sequential scan or index full scan (not normal index scan) can run.

pg_bigm 1.1 or later can coexist with pg_trgm in the same database, but pg_bigm 1.0 cannot.

如無特殊要求推薦使用"pg_bigm",我們測試一下效果:

可以使用位圖索引掃描,對于本次案例,使用pg_trgm效果同pg_bigm。

以上

本文只是簡單的介紹許多細節并未做深入的分析,歡迎留言指教或者討論

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩欧美在线视频日韩欧美在线视频| 欧美大片大片在线播放| 97超级碰在线看视频免费在线看| 久久伊人91精品综合网站| 黄色精品一区二区| 国产美女精品视频| 久久久免费观看视频| 在线观看日韩专区| 欧美一区二区影院| 91在线精品播放| 亚洲国产精品成人va在线观看| 色婷婷**av毛片一区| 亚洲视频第一页| 欧美激情精品久久久久| 97人人爽人人喊人人模波多| 欧美日本高清视频| 亚洲福利精品在线| 亚洲精品久久久久久久久久久久| 欧美电影在线观看网站| 97视频在线观看免费高清完整版在线观看| 亚洲第五色综合网| 91精品国产综合久久香蕉922| 欧美日韩激情网| 欧美性少妇18aaaa视频| 伊人久久久久久久久久久| 日韩av电影在线播放| 精品中文字幕乱| 久久久久久噜噜噜久久久精品| 久久在线精品视频| 69久久夜色精品国产7777| 国产精品亚洲视频在线观看| 久久精品久久久久| 在线观看欧美成人| 综合久久五月天| 色综合色综合久久综合频道88| 国产精品视频免费观看www| 日韩欧美精品在线观看| 成人欧美一区二区三区在线湿哒哒| 97精品国产aⅴ7777| 欧美交受高潮1| 韩剧1988在线观看免费完整版| 日韩精品在线观看网站| 亚洲一区二区三区sesese| 久久久黄色av| 在线视频亚洲欧美| 久久亚洲影音av资源网| 久久777国产线看观看精品| 亚洲黄色在线观看| 亚洲精品女av网站| 亚洲精品www| 精品调教chinesegay| 深夜福利一区二区| 国产精品99久久久久久白浆小说| www.日韩欧美| 欧美视频在线观看 亚洲欧| 中文字幕在线看视频国产欧美| 亚洲精品videossex少妇| 日韩中文字幕视频在线观看| 国产精品1区2区在线观看| 日本一区二区在线播放| 亚洲欧洲日产国码av系列天堂| 精品亚洲va在线va天堂资源站| 亚洲欧洲中文天堂| 高清一区二区三区四区五区| 国产午夜精品免费一区二区三区| 欧美性理论片在线观看片免费| 亚洲精品自拍视频| 狠狠做深爱婷婷久久综合一区| 高清在线视频日韩欧美| 成人h片在线播放免费网站| 91精品视频播放| 国产精品一区二区3区| 亚洲在线一区二区| 国产精品久久久久福利| 欧美日韩福利视频| 福利视频第一区| 午夜美女久久久久爽久久| 国产亚洲人成网站在线观看| 亚洲国产成人精品电影| 欧美日韩人人澡狠狠躁视频| 国产精品视频yy9099| 岛国视频午夜一区免费在线观看| 最新日韩中文字幕| 亚洲老头同性xxxxx| 日韩免费不卡av| 亚洲黄色片网站| 日韩在线视频免费观看高清中文| 欧美午夜丰满在线18影院| 国产精品日韩专区| 久久免费福利视频| 亚洲欧美国产精品专区久久| 国产精品视频自在线| 亚洲美女又黄又爽在线观看| 亚洲男人的天堂在线| 亚洲男人的天堂网站| 精品女厕一区二区三区| 国内精品久久久久久久| 国内精品久久久久久| 91精品久久久久久久久中文字幕| 亚洲韩国日本中文字幕| 97精品视频在线观看| 亚洲国产成人在线播放| 日韩精品视频免费专区在线播放| 黑人欧美xxxx| 日韩精品视频在线免费观看| xxxxx91麻豆| 成人精品福利视频| 2019中文在线观看| 久久天天躁狠狠躁老女人| 亚洲成人xxx| 7m精品福利视频导航| 91久久久在线| 国模视频一区二区三区| 日本欧美在线视频| 亚洲精品国产成人| 另类专区欧美制服同性| 久久成人一区二区| 91人人爽人人爽人人精88v| 欧美一二三视频| 精品亚洲夜色av98在线观看| 中文字幕欧美专区| 在线视频日本亚洲性| 成人黄色在线播放| 久久韩剧网电视剧| 91久久精品国产| 亚洲精品av在线播放| 亚洲最大福利视频| 亚洲国产精品悠悠久久琪琪| 亚洲欧美国产另类| 国产精品无码专区在线观看| 欧美一级视频一区二区| 成人一区二区电影| 亚洲香蕉在线观看| 狠狠躁夜夜躁人人躁婷婷91| 日本最新高清不卡中文字幕| 国产成人免费av电影| 九九视频直播综合网| 亚洲欧美变态国产另类| 久久亚洲私人国产精品va| 欧美视频专区一二在线观看| 久久久亚洲欧洲日产国码aⅴ| 少妇久久久久久| 欧美极品少妇xxxxⅹ喷水| 日韩av在线精品| 成人午夜一级二级三级| 尤物tv国产一区| 国产69久久精品成人看| 欧美一级视频在线观看| 欧美激情在线播放| 日韩欧中文字幕| 欧美中文在线观看国产| 精品国产依人香蕉在线精品| 精品国产成人在线| 欧美色道久久88综合亚洲精品| 国产成人免费av| 国产97色在线|日韩| 日韩av一区在线| 欧美日韩国产色视频| 亚洲第一男人天堂| 亚洲欧美日韩另类| 91久久中文字幕| 欧美视频一二三| 国产精品青草久久久久福利99| 欧美在线亚洲一区|