中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Postgresql 查詢中的特異功能是什么

發布時間:2022-01-04 09:56:55 來源:億速云 閱讀:126 作者:柒染 欄目:大數據

這期內容當中小編將會給大家帶來有關Postgresql 查詢中的特異功能是什么,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

本來上次是寫過這個PostgreSQL 的功能的,但上次在一個論壇里面發現其實大家對這個功能認識上是有誤區的,所示這次是的詳細的一次文字。

功能很簡單的就是模糊查詢,類似 select * from table where column1 like ‘%PG牛逼%’;然后走一個靠譜的索引的查詢,ORACLE 打死他都不行,當然可以走全文索引,那MYSQL, SQL SERVER 人家也不干,人家也有這功能。

pg_trgm本身是不包含在PostgreSQL 的源碼安裝中的,當然是插件的方式安裝,安裝上是很簡單的,具體請百度(弄濕了我可不管)

進入到你的數據庫,create extension pg_trgm;就OK 了

Postgresql 查詢中的特異功能是什么

我在論壇中發現的第一個問題,是說建立這樣的模糊查詢,僅僅建立btree 索引就可以了,但pg_trgm 只支持兩種索引Gist and Gin, 這兩種索引。(這可不是我說的,官方的白紙黑字)

Postgresql 查詢中的特異功能是什么

所以說正確的針對一個列的索引,是要建立兩個索引的,一個是BTREE 索引,一個是 GIN 或 Gist 索引,兩種索引面對的“客戶”是不同的。

那我們來看看到底他是怎么工作的

首先我們先生成一個表用來測試

創建一個存儲過程用來插入測試數據  

create or replace function data_produce(int) returns text as $$    

declare    

  res text;    

begin    

  if $1 >=1 then    

    select string_agg(chr(19968+(random()*20901)::int), '') into res from generate_series(1,$1);    

    return res;    

  end if;    

  return null;    

end;    

$$ language plpgsql strict; 

Postgresql 查詢中的特異功能是什么

insert into test_pg_trgm (search) select data_produce(20) from generate_series(1,1110000);

執行后生成我們本次要測試的數據10萬條

Postgresql 查詢中的特異功能是什么

Postgresql 查詢中的特異功能是什么

下面我們創建索引了,創建GIN 索引 

創建索引中系統報錯,這是由于還沒有創建相關的擴展

Postgresql 查詢中的特異功能是什么

添加了這些擴展后我們就可以建立相關的索引

Postgresql 查詢中的特異功能是什么

我們可以看到查詢已經走了索引,并且查詢時間1ms

Postgresql 查詢中的特異功能是什么

那如果我們沒有這個索引會怎么樣,這條語句慢了 48倍并且只能和ORACLE  SQL SERVER , MYSQL一樣走了全表掃描。

Postgresql 查詢中的特異功能是什么

OK 如果已經體會到了PG 在模糊查詢中的厲害之處,群里有人問的第二個問題是 GIN VS GIST  那種索引更好

這也是一個熱門的問題?

下面也做一個測試,(但不證明GIN 比 GIST 性能強),我們建立一個gist的索引,也提通過查詢來進行模糊方式的查詢

Postgresql 查詢中的特異功能是什么

圖中的時間 12ms ,比全表掃描快了4倍,比GIN 慢了12倍

當然這里并不是說 GIST 不如GIN ,具體的索引有不同的使用場景。(做人辦事都的客觀)

最后,我們來證明一下,普通的運算方式對于GIST GIN 索引是無效的,所以我們對某個字段必須建立兩個索引 BTREE AND  GIST OR GIN。

下圖整體的證明了上面的立論。這里就不解釋了

Postgresql 查詢中的特異功能是什么

上述就是小編為大家分享的Postgresql 查詢中的特異功能是什么了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

裕民县| 陈巴尔虎旗| 洪雅县| 北安市| 金湖县| 达尔| 长宁县| 长顺县| 五莲县| 台东市| 旺苍县| 诸暨市| 尚志市| 平果县| 马公市| 肇州县| 平江县| 宣武区| 潞西市| 宁德市| 那曲县| 北流市| 大关县| 治多县| 冀州市| 马边| 措勤县| 古浪县| 林西县| 舒城县| 洮南市| 二连浩特市| 开封县| 佛教| 尖扎县| 津市市| 正安县| 平远县| 抚远县| 疏附县| 百色市|