我有兩個表TABLEA(33M記錄)和tableB的(270K記錄), 我想刪除TableA中的所有記錄也存在TableB中。所以在下面寫一個SQL語句。 我認爲它應該被修改,因爲它表超過1小時將其全部刪除。 如果這種手術通常會有,你有沒有想法? 注意:兩個表的主鍵都是id。的Oracle SQL刪除操作的性能
delete from tableA where id in (select id from tableB);
這裏是SQL語句解釋
| 0 | DELETE STATEMENT | | 289K| 7341K| | 85624 (1)| 00:17:08 |
| 1 | DELETE | tableA | | | | | |
| 2 | MERGE JOIN | | 289K| 7341K| | 85624 (1)| 00:17:08 |
| 3 | INDEX FULL SCAN | SYS_C0015397 | 36M| 455M| | 84050 (1)| 00:16:49 |
|* 4 | SORT JOIN | | 289K| 3670K| 11M| 1574 (1)| 00:00:19 |
| 5 | INDEX FAST FULL SCAN| SYS_C0015401 | 289K| 3670K| | 193 (2)| 00:00:03 |
---------------------------------------------------------------------------------------------------
請張貼的「解釋計劃<你的delete語句」的結果,並從「選擇表(DBMS_XPLAN.DISPLAY)*」 –
更新的問題,增加解釋的SQL語句的結果。 –
閱讀:[存在X in向湯姆(http://asktom.oracle.com/pls/asktom/f?p=100:11:::::P11_QUESTION_ID:953229842074) –