如何提高此查询的性能:

SELECT designs.* FROM designs
WHERE designs.state = 'in_stock'
ORDER BY designs.grade, id DESC

解释输出:
 Sort  (cost=47475.35..47591.91 rows=46621 width=763)
   Sort Key: grade, id
   ->  Seq Scan on designs  (cost=0.00..12304.20 rows=46621 width=763)
         Filter: ((state)::text = 'in_stock'::text)

这张桌子有25万多条记录。
state上建立索引没有多大帮助。

最佳答案

1)命名列而不是*例如Select col1,col2….是否需要所有列都在结果集中?如果不显示您需要的这些列。
2)您将索引放在了哪些列上?尝试状态索引,包括等级和ID.
3)state=‘in_stock’是否可以替换为对整数值进行筛选并产生相同结果的内容?状态字段本身是否可以转换为int类型并建立索引,然后为这些整数值创建一个查找表?

关于sql - 查询性能改进—排序过滤器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27598591/

10-16 03:51