2017-06-02 8 views
0

私はSQLクエリを調整しています。説明計画をチェックすると、テーブルINTERFACE_ADT_AOE_MASTERとTEST_REQUIREDがフルテーブルスキャンの対象となります。私は、これは、これらのテーブルは、全表スキャンのために行くされているサブクエリですSQLの結合テーブルのインデックスを作成する方法

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は同じです。

誰も私にそのインデックスを作成する方法を教えてもらえますか?全表スキャンのために別の理由があり得ること

(SELECT TEST_ID 
     FROM TEST_REQUIRED 
     WHERE EXISTS 
     (SELECT 1 FROM INTERFACE_ADT_AOE_MASTER WHERE TEST_CODE = REQUIRED_TEST_CODE) 
) 

注:完全なクエリとEXPLAIN PLANを見ずにINTERFACE_ADT_AOE_MASTER.TEST_CODE上のインデックスとにあなたのサブクエリを変更を加えるおかげで事前に

+0

どのSQLデータベースですか? – maSTAShuFu

+0

@maSTAShuFu Oracle 11g – kushi

+0

申し訳ありませんが、オラクルを使用したことはありませんが、SSMSを使用したSQL Serverでは、クエリ実行プランを使用して、 – maSTAShuFu

答えて

0

てみてくださいこれが役立つかどうかは分かりません。

関連する問題