如果特定列是否为空值,哪种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'

09-30 17:37