如何提高这个查询的性能:
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)
该表有超过 250000 条记录。
在 state
上建立索引没有多大帮助。
最佳答案
1) 命名列而不是 * 例如 Select col1, col2....是否需要所有列都在结果集中?如果不显示,仅显示您需要的这些列。
2) 你把索引放在了哪些列上?尝试对州建立索引并包括年级和 ID。
3) state = 'in_stock ' 可以替换为过滤整数值并产生相同结果的东西吗?是否可以将状态字段本身转换为 int 类型并进行索引,然后为这些整数值创建一个查找表?
关于sql - 查询性能改进——排序过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27598591/