我需要迁移4百万条记录。
在验证器中,要检查列是否为NULL,哪些性能更高?
WHERE name IS NULL;
或
WHERE NVL(name,' ') = ' '
答案 0 :(得分:0)
在我的机器上找到一张3689150行的表格:
create table t234 as
select editionable as name
from all_objects
cross join (
select 1 from dual
connect by level <= 50
);
select count(*) from t234;
COUNT(*)
----------
3689150
第一个更快:
set timing on
select count(*) from t234 where name is null;
COUNT(*)
----------
1612400
Elapsed: 00:00:00.094
select count(*) from t234 where NVL(name,' ') = ' ';
COUNT(*)
----------
1612400
Elapsed: 00:00:00.203
第一个查询需要94毫秒,第二个查询需要203毫秒
所以第一个速度提高了100%以上 - 使用NOT NULL
运算符代替NVL(name,' ') = ' '