PG中使用索引進行模糊查詢

2021-09-19 04:14:45 字數 927 閱讀 7593

現在資料庫中存在乙個tb_user(id, name,age)表,並且已經針對name字段建立了索引tb_user_name_idx

正常情況下,執行如下sql語句:

explain

analyze

select

*from tb_user where name like

'%aaa%';

發現該sql語句在name欄位上使用的是seq scan而不是index scan或bitmap heap scan,執行時間在1s以上。

想要在模糊查詢時在name欄位上使用索引,需要執行如下sql語句

create extension pg_trgm;

create

index tb_user_name_trgm_gist_idx on tb_user using gist(name gist_trgm_ops)

;

此時,再執行:

explain

analyze

select

*from tb_user where name like

'%aaa%';

發現該sql語句在name欄位上使用了bitmap heap scan,使用到了新建立的索引,而且執行時間減少到20-30ms

PG 模糊查詢 json欄位索引

查詢sql select from test where content order by content desc limit 1 以上由於內部機制不加排序會不觸發gin索引,所以要加排序 原先不加limit,不走索引 首先表裡面有99w行記錄,content欄位是jsonb格式的,上面有gin索...

在模糊查詢中使用ESCAPE

這個問題也是無意中得知的,原因在於我在模糊查詢的時候輸入了乙個 誰知將全部結果都查詢出來了,想了一下,既然是萬用字元,輸了個 進去,當然全部查詢出來了,避免的辦法就是使用escape。sql語句可以寫成 select from tablename where colname like input e...

ibatis中使用like模糊查詢

無效的方法 select from table1 where name like name 兩種有效的方法 1 使用 代替 此種方法就是去掉了型別檢查,使用字串連線,不過可能會有sql注入風險。select from table1 where name like name 2 使用連線符。不過不同的...