在研究Oracle查询解析和性能时,我遇到了以下行为.我使用了以下查询,
SELECT 1
FROM USER_PROCEDURES
WHERE OBJECT_NAME = SUBSTR( UPPER('Client_Sys.Clear_Info' ), 1, INSTR( UPPER('Client_Sys.Clear_Info'), '.' ) - 1 )
AND PROCEDURE_NAME = SUBSTR( UPPER('Client_Sys.Clear_Info' ), INSTR( UPPER('Client_Sys.Clear_Info' ),'.' ) + 1 )
UNION
SELECT 1
FROM USER_OBJECTS
WHERE OBJECT_NAME = UPPER('Client_Sys.Clear_Info')
AND OBJECT_TYPE = 'PROCEDURE';
Run Code Online (Sandbox Code Playgroud)
上述查询的解释计划如下,

现在我将查询更改为以下格式[交换SELECT语句],
SELECT 1
FROM USER_OBJECTS
WHERE OBJECT_NAME = UPPER('Client_Sys.Clear_Info')
AND OBJECT_TYPE = 'PROCEDURE'
UNION
SELECT 1
FROM USER_PROCEDURES
WHERE OBJECT_NAME = SUBSTR( UPPER('Client_Sys.Clear_Info' ), 1, INSTR( UPPER('Client_Sys.Clear_Info'), '.' ) - 1 )
AND PROCEDURE_NAME …Run Code Online (Sandbox Code Playgroud)