SQL查询下面的时间超过2分钟。请建议一些替代方案。SQL删除语句执行速度缓慢
DELETE from Table1
WHERE (a, b, c, d) IN (SELECT a, b, c, d
FROM Table2
WHERE a = 1 AND p_date BETWEEN '17-NOV-2014' AND '22-JAN-2208')
AND a = 1
解释平原:
| 3 | PARTITION LIST SINGLE | | 2232K| 76M| | 2273 (2)| 00:00:28 | 1 | 1 |
|* 4 | TABLE ACCESS FULL | Table2 | 2232K| 76M| | 2273 (2)| 00:00:28 | 1 | 1 |
| 5 | PARTITION RANGE ALL | | 283M| 28G| | 328K (2)| 01:07:20 | 1 | 104 |
| 6 | PARTITION LIST SINGLE | | 283M| 28G| | 328K (2)| 01:07:20 |KEY(AP)|KEY(AP)|
| 7 | TABLE ACCESS FULL | Table1 | 283M| 28G| | 328K (2)| 01:07:20 | KEY | KEY |
谓词信息(由操作ID标识):
1 - access("a"="a" AND "b"="b" AND "c"="c" AND
"d"="d")
4 - filter("p_date">=TO_DATE(' 2014-11-17 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND
"p_date"<=TO_DATE(' 2208-01-22 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
我不知道为什么我不能编辑你的问题。要格式化代码或表格,您可以选择全部,然后按ctrl + k。请做。 – 2014-11-25 06:01:07
*** SQL ***只是*结构化查询语言* - 许多数据库系统使用的语言,但不是数据库产品......很多东西都是特定于供应商的 - 所以我们真的需要知道什么**数据库系统**(以及您使用的版本)(请相应地更新标签)...... – 2014-11-25 06:22:56
虽然它可能不会加快速度:在外部条件不需要'和a = 1' ,因为你只会匹配'a = 1' - 因为你的子选择。 – evilive 2014-11-25 06:41:48