我有这个查询,我想通过添加适当的索引来提高它的性能。
DELETE FROM MYTAB1 WHERE MYID1 IN (SELECT MYID2 FROM MYTAB2);
我不熟悉索引的语法和它们所需的设置类型。请提供相同的。这里的主要问题是 MYTAB1 有数百万条记录,因此查询需要很多时间。但是,MYTAB2 只有 1000 条记录。MYID1 是 MYTAB1 的主键
我试过创建索引:
CREATE INDEX IDX_TAB1_ID1 ON MYTAB1(MYID1);
它对查询的性能没有太大影响。
我运行了解释计划并得到了这个:
PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)|
------------------------------------------------------------------------------------
| 0 | DELETE STATEMENT | | 63977 | 11M| | 62216 (2)|
| 1 | DELETE | MYTAB1 | | | | |
| 2 | HASH JOIN RIGHT SEMI| | 63977 | 11M| 7688K| 62216 (2)|
| 3 | TABLE ACCESS FULL | MYTAB2 | 437K| 2561K| | 1189 (2)|
| 4 | TABLE ACCESS FULL | MYTAB1 | 3761K| 678M| | 24718 (4)|
------------------------------------------------------------------------------------