【发布时间】:2011-09-21 19:25:34
【问题描述】:
在存储过程的where子句中使用函数调用会降低sql server 2005的性能?
SELECT * FROM Member M
WHERE LOWER(dbo.GetLookupDetailTitle(M.RoleId,'MemberRole')) != 'administrator'
AND LOWER(dbo.GetLookupDetailTitle(M.RoleId,'MemberRole')) != 'moderator'
在这个查询中,GetLookupDetailTitle 是一个用户定义的函数,而 LOWER() 是我所询问的内置函数。
【问题讨论】:
-
信息肯定不够!什么函数调用?我们可以看看 SQL 吗?
-
将函数应用于 where 子句中的列会否定使用该列上的任何索引的能力。这通常被称为非 sargable 查询。
标签: sql sql-server performance user-defined-functions