sql – 数据库函数VS Case语句
|
昨天我们得到了一个必须得到db字段类型的场景,并且在此基础上我们必须编写字段的描述.喜欢 Select ( Case DB_Type When 'I' Then 'Intermediate'
When 'P' Then 'Pending'
Else 'Basic'
End)
From DB_table
我建议编写一个db函数而不是这个case语句,因为它更可重用.喜欢 Select dbo.GetTypeName(DB_Type) from DB_table 有趣的是,我们的开发人员之一说使用数据库函数效率低,因为数据库函数比Case语句慢.我通过互联网搜索找到了答案,这在效率方面是更好的方法但不幸的是我发现没有什么可以被认为是满意的答案.请用你的想法赐教,哪种方法更好? 解决方法UDF function is always slower than case statements 请参阅文章 http://blogs.msdn.com/b/sqlserverfaq/archive/2009/10/06/performance-benefits-of-using-expression-over-user-defined-functions.aspx 以下文章建议您何时使用UDF http://www.sql-server-performance.com/2005/sql-server-udfs/ 摘要: 当使用用户定义的函数时,会产生很大的性能损失.当查询将UDF应用于大量行(通常为1000或更多)时,此惩罚显示为查询执行时间较差.由于SQL Server数据库引擎必须创建自己的内部游标(如处理),因此会产生惩罚.它必须在每一行上调用每个UDF.如果在WHERE子句中使用UDF,这可能会作为过滤行的一部分发生.如果在选择列表中使用UDF,则在创建查询结果以传递到查询处理的下一阶段时会发生这种情况.这是逐行处理,最大程度地降低了SQL Server的速度. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 一个分页存储过程代码
- 如何使用CASE语句在sql server中创建数据透视查询
- sql-server-2008 – SQL Server 2008表现不佳 – 迁移到新服
- SQL Server sql 普通行列转换
- sql – MS Access 2010:“无法再打开任何数据库.”
- sql – 如何为所有行选择XML字段节点
- sql-server – 在多个插入或更新周围使用事务的正确方法
- linq-to-sql – Linq To SQL Group By和Sum
- sql – 从Materialized View DDL中删除表空间信息
- sql-server – 关于作为Head Blocker的SQL连接,我该怎么办?
