2017-06-02 4 views
0

Ich bin eine SQL-Abfrage tuning. Wenn ich den Erklärungsplan überprüfte, gehen die Tabellen INTERFACE_ADT_AOE_MASTER und TEST_REQUIRED zum vollständigen Tabellenscan über. Ich möchte ein IndexWie erstellt man einen Index für Joining-Tabellen in SQL

Tabellenstruktur

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 

Dies ist die Sub-Abfrage erstellen, in dem diese Tabellen für Full Table Scan werden.

(SELECT TEST_ID 
     FROM TEST_REQUIRED 
     WHERE REQUIRED_TEST_CODE IN 
     (SELECT TEST_CODE FROM INTERFACE_ADT_AOE_MASTER 
     ) 
    ) 

REQUIRED_TEST_CODE und TEST_CODE sind gleich.

Kann mir jemand vorschlagen, wie man einen Index dafür erstellt? Vielen Dank im Voraus

+0

welche SQL-Datenbank? – maSTAShuFu

+0

@maSTAShuFu Oracle 11 g – kushi

+0

Sorry nie Oracle verwendet, aber in SQL-Server über SSMS können wir den Abfrageausführungsplan verwenden, um vorgeschlagenen Index zu erstellen – maSTAShuFu

Antwort

0

Versuchen einen Index für INTERFACE_ADT_AOE_MASTER.TEST_CODE Hinzufügen und Ändern von Unterabfrage:

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

Beachten Sie, dass es verschiedene Gründe für den vollständigen Tabellenscan sein kann: ohne die vollständige Abfrage zu sehen, und die EXPLAIN PLAN es ist schwer zu wissen, ob das hilft.

Verwandte Themen