sql - 在 SQL Server 中使用 ISNULL() 时是否存在任何性能问题?

标签 sql sql-server sql-server-2008 sql-server-2005

我在MS SQl server 2008中使用ISNULL,因为我的表太大,使用ISNULL是否会对性能造成任何影响?

提前致谢

最佳答案

select子句中的ISNULL()对性能的影响可以忽略不计。 另一方面,在 where 子句中,它会对性能产生非常巨大的影响,因为它会阻止优化器在该列上使用索引。

where isnull(col1, 0) = 0 -- unable to use index, because every 
                          -- row has to be evaluated

where col1 = isnull(@myVar, 0) -- index will be used, since isnull(@myVar, 0) 
                               -- returns the same static value for every row and 
                               -- not every row has to be evaluated by the function.

因此,当在 where 子句中使用 isnull() 时,请评估它是否会阻止查询优化器使用索引。如果是这样,请考虑使用结果 if isnull(col1, 0) 创建一个计算列,并对计算列建立索引并在 where 子句中使用它。

关于sql - 在 SQL Server 中使用 ISNULL() 时是否存在任何性能问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8924913/

相关文章:

sql - 帮助插入查询

sql - 使用createCriteria进行Grails子查询

MySQL 查询建议

SQL添加带有检查的外键约束

sql - 可以优化此 SQL 查询以运行得更快吗?

php - 有没有办法使用 PHP 而不是使用 mssql_pconnect() 将 MySQL 连接到 SQL DB?

sql-server - 将 CSV 导入 SQL Server 时无法在输入文件中找到模式

sql-server - 如何临时将系统管理员权限授予用户?

sql - 在 SQL Server 中替换整个表中的字符

sql-server-2008 - SQL Server中的巨大表(900万条记录)