Как прочитать план выполнения?
Ответ прост. Читайте его так же, как если бы вы читали многоуровневый вызов функций на императивном языке.
Например, , ваш план выполнения
------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
------------------------------------------------------------------------------
| 0 | DELETE STATEMENT | | 6 | 36 | 6 (0)| 00:00:01 |
| 1 | DELETE | TAB001 | | | | |
|* 2 | HASH JOIN SEMI | | 6 | 36 | 6 (0)| 00:00:01 |
| 3 | TABLE ACCESS FULL| TAB001 | 6 | 18 | 3 (0)| 00:00:01 |
| 4 | TABLE ACCESS FULL| TAB001 | 6 | 18 | 3 (0)| 00:00:01 |
------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - access("ID"="A"."ID")
можно прочитать (вформа императивного псевдокода) просто как
delete(
from: "TAB001",
data_set_to_be_deleted: semi_join(
join_algorithm: "hash join",
leading_data_set: table_access(
read_access_method: "full",
table_name: "TAB001"
),
trailing_data_set: table_access(
read_access_method: "full",
table_name: "TAB001",
aliased_as: "A"
),
join_condition: "ID = A.ID"
)
)