where isnull(name,'') <> ''
is gelijk aan
where name is not null and name <> ''
wat op zijn beurt gelijk is aan
where name <> ''
(indien naam IS NULL
die laatste uitdrukking zou evalueren tot onbekend en de rij niet geretourneerd)
Het gebruik van de ISNULL
patroon resulteert in een scan en is minder efficiënt, zoals te zien is in de onderstaande test.
SELECT ca.[name],
[number],
[type],
[low],
[high],
[status]
INTO TestTable
FROM [master].[dbo].[spt_values]
CROSS APPLY (SELECT [name]
UNION ALL
SELECT ''
UNION ALL
SELECT NULL) ca
CREATE NONCLUSTERED INDEX IX_TestTable ON dbo.TestTable(name)
GO
SELECT name FROM TestTable WHERE isnull(name,'') <> ''
SELECT name FROM TestTable WHERE name is not null and name <> ''
/*Can be simplified to just WHERE name <> '' */
Dat zou je het uitvoeringsplan moeten geven dat je nodig hebt.