Да это справедливо для 8 - но только для кода PL/SQL.
Такова была реализация пакета STANDART в версия 8. is not null отрабатывался за 2 операции
в 9-ке и выше это уже исправлено - обе записи выполняются эквивалентно.
declare nCount number:=1000000;t1 NUMBER;t2 NUMBER;t3 NUMBER;t4 NUMBER;
i number;
n number := 1;
begin
t1 := dbms_utility.get_time;
FOR i IN 1..nCount LOOP
if not n is null then
n := null;
else
n := 1;
end if;
END LOOP; t2 := dbms_utility.get_time;
FOR i IN 1..nCount LOOP
if n is not null then
n := null;
else
n := 1;
end if;
END LOOP; t3 := dbms_utility.get_time;
FOR i IN 1..nCount LOOP
if n is null then
n := 1;
else
n := null;
end if;
END LOOP; t4 := dbms_utility.get_time;
dbms_output.put_line('Execution Time - second');
dbms_output.put_line('---------------------');
dbms_output.put_line('not n is null: ' || TO_CHAR((t2 - t1)/100));
dbms_output.put_line('n not is null: ' || TO_CHAR((t3 - t2)/100));
dbms_output.put_line(' n is null: ' || TO_CHAR((t4 - t3)/100));
end;
Execution Time - second
---------------------
n is not null: 1.5
not n is null: .31
n is null: .31