SELECT *
FROM t1, t2 , t3
WHERE t1.row_id = t2.invoice_id(+)
and t2.voi_id = t3.row_id(+)
and type = 'Dec'
order by 1
Ich habe 3 Indizes, eine für jede Spalte in der Verknüpfung, aber es scheint, dass der Plan erklären verwendet einen Full Table Scan auf den Tischen, ohne die Indizes mit:äußere Verbindung und unter Verwendung von Oracle-Indizes
-Plan
1 Every row in the table t1 is read.
2 The rows were sorted to support the join at step 5.
3 Every row in the table t2 is read.
4 The rows were sorted to support the join at step 5.
5 Join the sorted results sets provided from steps 2, 4.
6 Rows were returned by the SELECT statement.
Es müssen genügend Zeilen in der Tabelle vorhanden sein, um die Verwendung eines Index zu rechtfertigen, bevor Oracle sich für die Verwendung eines Index entscheidet. – Glenn
Sie könnten versuchen, einen Oracle-Hinweis zu verwenden, um zu sehen, ob der Explain-Plan geändert wird - SELECT/* + INDEX (t1 t1_index_name_hier) */* FROM t1, t2, t3 ... –
Es würde helfen, wenn das Standard-EXPLAIN-Planformat wurde benutzt. Führen Sie explave plan für select * ...; 'und dann' select * from table (dbms_xplan.display); 'aus und fügen Sie die * gesamte * Ausgabe der Frage hinzu. –