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
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
添加并行的情况下也特别快
并行2的情况下也不会走联合索引
问题分析:ORDER BY ID列不在联合索引中,所以没有走联合索引,可以将id列添加到原有的联合索引。
文章
阅读量
获赞