Ниже SQL-запроса занимает более 2 минут. Пожалуйста, предложите альтернативу.Оператор SQL Delete медленное выполнение
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
Объяснить Plain:
| 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 |
предиката Информация (идентифицированной операции ид):
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. Пожалуйста, сделайте это. –
*** SQL *** - это только * Structured Query Language * - язык, используемый многими системами баз данных, но не продукт базы данных ... многие вещи специфичны для поставщиков, поэтому нам действительно нужно знать, что такое ** база данных system ** (и какую версию) вы используете (пожалуйста, обновите теги соответственно) .... –
Хотя это, возможно, не ускорит его: вам не нужно «и a = 1» во внешнем условии , потому что вы будете соответствовать только символам 'a = 1' - из-за вашего подвыборки. – evilive