在对I / O等待非常高的服务器进行故障排除时,我注意到来自SELECT max(x) FROM t WHERE y = ?
的查询有很多I / O.
我的索引是btree (x, y)
。
我注意到查询计划执行 Index Scan Backward 以获得最大值。那不好吗?我应该担心这个并且可能添加另一个索引(反向)吗?或者有更好的方法来创建适合此类查询的索引吗?
答案 0 :(得分:16)
不,不错,从第一个索引页开始需要相同的时间,因为它需要从最后一个索引页开始。使用DESC创建降序索引时,您可以看到“差异”。
此查询的索引(y,x)可能会更好。
答案 1 :(得分:3)
索引已排序,首先是最低值。要查找最大值,后向索引扫描将首先找到最大值:)。
我假设SELECT min(x)会导致正常的索引扫描,是吗?