План выполнения внешнего ключа Oracle?

Рассмотрим следующую (упрощенную) ситуацию:

CREATE TABLE PARENT (
    PARENT_ID INT PRIMARY KEY
);

CREATE TABLE CHILD (
    CHILD_ID INT PRIMARY KEY,
    PARENT_ID INT NOT NULL,
    FOREIGN KEY (PARENT_ID) REFERENCES PARENT (PARENT_ID)
);

Нет индекса для CHILD).PARENT_ID , поэтому изменение / удаление PARENT обходится дорого (Oracle необходимо выполнить полное сканирование таблицы на CHILD , чтобы обеспечить ссылочную целостность). Тем не менее, план выполнения следующего оператора ...

DELETE FROM PARENT WHERE PARENT_ID = 1

... не показывает сканирование таблицы (SYS_C0070229 - это индекс на PARENT.PARENT_ID ):

query plan

Я знаю, что есть способы видеть все неиндексированные ИНОСТРАННЫЕ КЛЮЧИ , но было бы еще лучше, если бы я мог быть «предупрежден» о потенциальной проблеме в самом плане выполнения запроса (кстати, это делают MS SQL Server и, возможно, другие базы данных).

Возможно ли такое в Oracle?

Я использую Oracle 10.2, если это важно.

5
задан Branko Dimitrijevic 15 February 2012 в 21:22
поделиться