PG 模糊查詢 json欄位索引

2021-09-26 18:54:59 字數 526 閱讀 9201

查詢sql: 

select * from test where "content" @> '' order by "content" desc limit 1;

以上由於內部機制不加排序會不觸發gin索引,所以要加排序;

原先不加limit,不走索引: 首先表裡面有99w行記錄,content欄位是jsonb格式的,上面有gin索引,對content欄位使用@>''進行過濾時,給予代價的執行優化器預設地認為有千分之一能命中,即990行能命中,如果不加limit 1總估算為19655.00,加了limit 1,執行優化器再取了個平均值,得到19.85的估算值。 實際上可以看到,只有一行可以命中。執行優化器的估算值和實際相差較大,認為順序掃瞄比走索引更優。

加上order by以後,強制要求排序,即使加了limit 1,執行優化器也不會再除990,最後執行優化器認為走索引更優。

大概是以上的分析。原因和pg基於cost的執行優化器對於@> 的估算不准有關。強制加上order by可以避免

select * from test where &#

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

現在資料庫中存在乙個tb user id,name,age 表,並且已經針對name字段建立了索引tb user name idx。正常情況下,執行如下sql語句 explain analyze select from tb user where name like aaa 發現該sql語句在nam...

mysql模糊查詢索引 MySQL模糊查詢全文索引

全文索引 mysql front dump 2.5 host localhost database test server version 4.0.12 nt log table structure for table t3 create table t3 name char 12 not null...

select 多欄位模糊查詢

表名為user 1 username admin,password 000000 2 username admin,password 123456 我們要實現的效果是可以輸入多個關鍵字查詢,多個關鍵字間以逗號分隔。使用上述表舉例 輸入單個關鍵字 admin 可查出這兩條資料,輸入 admin,000...