标签归档:min max 优化

让“select min(xxx),max(xxx) from xxx”走索引

首先,做一个测试表: 在extent_id列上创建非唯一索引: 下面的语句没有走索引: 手工指定IDX_LUNAR_EXTENT_ID时,也不走索引: 指定该列为非空时,可以走索引(Oracle的索引不保存空值): 可以看到,无论是否使用hint都走索引了: 再次验证,依然这个结果: LUNAR@lunar>alter table lunar modify extent_id null; Table altered. Elapsed: 00:00:00.01 单独查询最小值或者最大值时,也可以走索引,采用“INDEX FULL SCAN (MIN/MAX)”: 假设,在不能修改表结构的情况下,怎么才能让“select min(extent_id),max(extent_id) from lunar”走索引呢? 参考了网上的一些建议,改写sql如下:

发表在 Performence Tuning | 标签为 | 留下评论