我有两个表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) –