ich die unten Abfrage haben. was die Leistung aufgrund der Unterabfrage verlangsamt. Ich habe viel versucht, Join statt Subquery hinzuzufügen. aber vergeblich. Kann mir jemand sagen, wie ich diese Abfrage mit JOIN umschreiben kann?Notwendigkeit dieser SQL-Abfrage zu optimieren die Leistung zu verbessern
update Table_1
set status = 'Status_2'
where status ='status_1' and (col_1, col_2, col_3, nvl(col_4,0), col_5) in (
select col_1, col_2, col_3, nvl(col_4,0), col_5 from Table_2 where status ='Status_0');
Bitte beachten Sie die SELECT * FROM table(DBMS_XPLAN.Display);
unter
Plan hash value: 1290346170
------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
------------------------------------------------------------------------------------------------------
| 0 | UPDATE STATEMENT | | 1 | 376 | 456 (3)| 00:00:06 |
| 1 | UPDATE | Table_1 | | | | |
| 2 | NESTED LOOPS | | | | | |
| 3 | NESTED LOOPS | | 1 | 376 | 456 (3)| 00:00:06 |
| 4 | SORT UNIQUE | | 1 | 316 | 454 (3)| 00:00:06 |
|* 5 | TABLE ACCESS FULL | Table_2 | 1 | 316 | 454 (3)| 00:00:06 |
|* 6 | INDEX RANGE SCAN | Table1_INDEX | 1 | | 1 (0)| 00:00:01 |
|* 7 | TABLE ACCESS BY INDEX ROWID| Table_1 | 1 | 60 | 1 (0)| 00:00:01 |
------------------------------------------------------------------------------------------------------`enter code here`
Bitte führen Sie 'EXPLAIN PLAN FÜR your_query'' dann SELECT * FROM Tabelle (DBMS_XPLAN.Display) ', dann kopieren Sie es ausgegeben ist und es um die Frage einfügen. – krokodilko
@kordirko, bitte sehen Sie sich das Ergebnis an. – Msn
@Msn Die geschätzte Zeit beträgt nur 6 Sekunden, was ziemlich schnell ist. Wie lange dauert die Abfrage? –