如果特定列是否为空值,哪种SQL验证更快?为什么?
1)SELECT * FROM TABLE1 WHERE COL1为NULL
执行此查询,然后检查是否能够读取任何记录。如果是,则为空值。
2)从COOL1为空的表1中选择COUNT(COL1)
读取返回的计数以确定是否有空记录
使用Oracle10g和SQLServer2005。
最佳答案
Count(columnName)永远不会对NULL值进行计数,当您指定列名时count会跳过NULLS,而当您使用*时不会对NULLS进行计数
运行这个
CREATE TABLE testnulls (ID INT)
INSERT INTO testnulls VALUES (1)
INSERT INTO testnulls VALUES (2)
INSERT INTO testnulls VALUES (null)
SELECT count(*) FROM testnulls WHERE ID IS NULL --1
SELECT count(ID) FROM testnulls WHERE ID IS NULL --0
我将使用exist代替,因为它是 bool(boolean) 操作,并且会在第一次出现NULL时停止
IF EXISTS (SELECT 1 FROM testnulls WHERE ID IS NULL)
PRINT 'YES'
ELSE
PRINT 'NO'