码迷,mamicode.com
首页 > 数据库 > 详细

PostgreSQL Select 索引优化

时间:2018-09-07 15:07:28      阅读:424      评论:0      收藏:0      [点我收藏+]

标签: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 索引

分析:当查询当个单词时,虽然有走全文索引,但是由于返回的结果集很大,有二十多万行数据,而且返回后需要再次进行排序,导致性能严重下降,

 

处理方法:限制全文索引返回的结果集行数,结果集变小了,也就减少了排序消耗的时间,况且全文索引分词返回的这么多数据,用户只是查看前面一部分,通过这种方式让用户完善搜索词,知道找到自己想要的结果。

SELECT
keyword,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 tmp ORDER BY avg_mon_search DESC LIMIT 500 OFFSET 0;

  技术分享图片

 

PostgreSQL Select 索引优化

标签:postgresq   搜索   图片   key   性能   查询   int   over   post   

原文地址:https://www.cnblogs.com/ryanzheng/p/9604464.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!