Usm*_*lid 9 sql t-sql sql-server sql-function
昨天我们得到了一个必须获得a类型的场景,db field并且我们必须编写该字段的描述.喜欢
Select ( Case DB_Type When 'I' Then 'Intermediate'
When 'P' Then 'Pending'
Else 'Basic'
End)
From DB_table
Run Code Online (Sandbox Code Playgroud)
我建议编写一个db函数而不是这个case语句,因为它更可重用.喜欢
Select dbo.GetTypeName(DB_Type)
from DB_table
Run Code Online (Sandbox Code Playgroud)
有趣的是,使用数据库的功能将是一个说我们的开发人员的效率低下的database functions是慢比Case statement.我通过互联网搜索找到答案,这是效率方面更好的方法但不幸的是我发现没有什么可以被认为是满意的答案.请用你的想法赐教,哪种方法更好?
UDF function is always slower than case statements
Run Code Online (Sandbox Code Playgroud)
请参阅文章
以下文章建议您何时使用UDF
http://www.sql-server-performance.com/2005/sql-server-udfs/
摘要:
当使用用户定义的函数时,会产生很大的性能损失.当查询将UDF应用于大量行(通常为1000或更多行)时,此惩罚显示为查询执行时间较差.由于SQL Server数据库引擎必须像处理一样创建自己的内部游标,因此会产生惩罚.它必须在每一行上调用每个UDF.如果在WHERE子句中使用UDF,则可能会将此作为过滤行的一部分.如果在选择列表中使用UDF,则在创建查询结果以传递到查询处理的下一阶段时会发生这种情况.这是逐行处理,最大程度地降低了SQL Server的速度.
| 归档时间: |
|
| 查看次数: |
4231 次 |
| 最近记录: |