【问题标题】:how to create index on joining tables in sql如何在sql中的连接表上创建索引
【发布时间】:2017-11-03 11:34:17
【问题描述】:

我正在调整 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_CODETEST_CODE 相同。

谁能建议我如何为其创建索引?提前致谢

【问题讨论】:

  • 哪个sql数据库?
  • @maSTAShuFu Oracle 11 g
  • 很抱歉从未使用过oracle,但在sql-server中通过SSMS我们可以使用查询执行计划来获取建议的索引来创建

标签: sql indexing oracle11g


【解决方案1】:

尝试在 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 )
)

请注意,全表扫描可能有不同的原因:没有看到完整的查询和解释计划,很难知道这是否有帮助。

【讨论】:

    猜你喜欢
    • 2021-02-23
    • 2013-12-01
    • 2015-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-15
    • 2013-03-29
    • 1970-01-01
    相关资源
    最近更新 更多