如何提高此查询的性能:
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/