注册
ORDER BY之后sql不走联合索引
技术分享/ 文章详情 /

ORDER BY之后sql不走联合索引

Solreal 2025/01/17 291 0 0

1、查询sql在不加order by的情况下查询速度特别快,加order by之后查询不走联合索引
2、EXECUTION_ID,ACT_ID,ACT_ID 三个列有联合索引

SELECT * FROM ( SELECT a.*, ROWNUM rnum FROM ( SELECT RES.* FROM HBGWYCJGPT.BPM_ACT_HI_ACTINST RES WHERE RES.EXECUTION_ID_ = '908259790449549312' AND RES.ACT_ID_ = 'hussar_2' AND RES.END_TIME_ IS NULL ORDER BY --添加order by RES.ID_ ASC ) a WHERE ROWNUM < 10) WHERE rnum >= 0

93fea9b242edc4665e0ae08f679a7b3.png

SELECT * FROM ( SELECT a.*, ROWNUM rnum FROM ( SELECT RES.* FROM HBGWYCJGPT.BPM_ACT_HI_ACTINST RES WHERE RES.EXECUTION_ID_ = '908259790449549312' AND RES.ACT_ID_ = 'hussar_2' AND RES.END_TIME_ IS NULL RES.ID_ ASC ) a -- 不添加order by WHERE ROWNUM < 10) WHERE rnum >= 0

f3130f5d2eabbfbb25c170bcf726cb6.png

添加并行的情况下也特别快
6ceb1454d78a720989e5cd9776dbca9.png
3983dfb316bb6941d328c722e95fce4.png
并行2的情况下也不会走联合索引
450195cdd65fe3368a8a01d3eb0e5ae.png

问题分析:ORDER BY ID列不在联合索引中,所以没有走联合索引,可以将id列添加到原有的联合索引。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服