注册

在表关联中or不走索引,但单独查询又走索引

fang 2024/12/05 399 5

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:
【操作系统】:
【CPU】:
【问题描述】*:

SELECT *FROM
ISSC_ISSCDB_USER.XAUTH_MENU
WHERE
EXISTS(
SELECT
1
FROM
ISSC_ISSCDB_USER.XAUTH_MENU XM
JOIN ISSC_ISSCDB_USER.XAUTH_TENANT_MENU_DEFAULT XT ON
XM.MENU_ID = XT.MENU_ID
JOIN ISSC_ISSCDB_USER.XAUTH_ROLE_MENU_DEFAULT RM ON
XT.MENU_ID = RM.MENU_CODE
JOIN ISSC_ISSCDB_USER.XAUTH_PRINCIPAL_ROLE_DEFAULT P ON
RM.ROLE_ID = P.ROLE_ID
AND ((P.PRINCIPAL_TYPE = 'USER'
AND P.PRINCIPAL_ID = 'YCZXGLY')
OR (P.PRINCIPAL_TYPE = 'USER_GROUP'
AND P.PRINCIPAL_ID = 'D1'))
JOIN ISSC_ISSCDB_USER.XAUTH_ROLE_DEFAULT R ON
RM.ROLE_ID = R.ID
WHERE
XM.STATUS = 1
AND XM.STATE != 2
AND R.STATUS = 1
AND XM.TREE_PATH LIKE '%@' || XAUTH_MENU.MENU_ID || '@%')
执行计划如下:慢在XAUTH_PRINCIPAL_ROLE_DEFAULT全表扫描
image.png
et耗时
image.png
这个XAUTH_PRINCIPAL_ROLE_DEFAULT表PRINCIPAL_ID是有索引的,单独查询执行计划如下:
image.png

回答 0
暂无回答
扫一扫
联系客服