我正在调整SQL查询。当我检查解释计划时,表格INTERFACE_ADT_AOE_MASTER和TEST_REQUIRED将进行全表扫描。我想创建一个索引
表格结构
Table ***INTERFACE_ADT_AOE_MASTER
Columns***
TESTCODE_MASTER_ID,
SOURCE_SYSTEM,
TEST_CODE,
QUESTION_CODE,
EAST_WEST_FLAG,
UOM,
STATUS,
MATCH_TYPE,
CREATED_DT,
STATUS_UPDATED_DTM,
QUESTION_CAPTION
Table ***TEST_REQUIRED***
Columns
TEST_REQUIRED_ID Primary Key,
TEST_ID,
REQUIRED_TEST_CODE,
CREATED_DATE,
MODIFIED_DATE
这是这些表用于全表扫描的子查询。
(SELECT TEST_ID
FROM TEST_REQUIRED
WHERE REQUIRED_TEST_CODE IN
(SELECT TEST_CODE FROM INTERFACE_ADT_AOE_MASTER
)
)
REQUIRED_TEST_CODE
和TEST_CODE
相同。
有人可以建议我如何为它创建索引吗?提前致谢
答案 0 :(得分:0)
尝试在INTERFACE_ADT_AOE_MASTER.TEST_CODE上添加索引并将子查询更改为:
(SELECT TEST_ID
FROM TEST_REQUIRED
WHERE EXISTS
( SELECT 1 FROM INTERFACE_ADT_AOE_MASTER WHERE TEST_CODE = REQUIRED_TEST_CODE )
)
请注意,全表扫描可能有不同的原因:没有看到完整的查询和EXPLAIN PLAN,很难知道这是否有用。