PostgreSQL Select 索引最佳化

來源:互聯網
上載者:User

標籤:postgresq   搜尋   圖片   key   效能   查詢   int   over   post   

使用 gin() 建立全文索引後,雖然有走索引,但是當結果集很大時,查詢效率還是很底下,

SELECT keyword,avg_mon_search,competition,impressions,ctr,position,suggest_bid,click,update_time 
FROM keyword
WHERE
update_time is not null and plainto_tsquery(‘driver‘) @@ keyword_participle
ORDER BY avg_mon_search DESC
LIMIT 500 OFFSET 0;

 

背景: keyword 表中有八千萬行資料,建立了 gin( keyword_participle ) 索引,以及其他排序欄位的 BTREE 索引

分析:當查詢當個單詞時,雖然有走全文索引,但是由於返回的結果集很大,有二十多萬行資料,而且返回後需要再次進行排序,導致效能嚴重下降,

 

處理方法:限制全文索引返回的結果集行數,結果集變小了,也就減少了排序消耗的時間,況且全文索引分詞返回的這麼多資料,使用者只是查看前面一部分,通過這種方式讓使用者完善搜尋字詞,知道找到自己想要的結果。

SELECTkeyword,avg_mon_search,competition,impressions,ctr,position,suggest_bid,click,update_time, count(*) over() as res_count FROM  (SELECT keyword,avg_mon_search,competition,impressions,ctr,position,suggest_bid,click,update_time 
FROM keyword WHERE update_time is not null AND avg_mon_search > 0 AND plainto_tsquery(‘english_nostop‘, ‘driver‘) @@ keyword_participle limit 20000
) AS tmpORDER BY avg_mon_search DESC LIMIT 500 OFFSET 0;

  

 

PostgreSQL Select 索引最佳化

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.