gpt4 book ai didi

sql - 数据库函数 VS Case 语句

转载 作者:行者123 更新时间:2023-12-02 11:14:37 27 4
gpt4 key购买 nike

昨天我们遇到了一个场景,必须获取数据库字段的类型,并在此基础上我们必须编写该字段的描述。喜欢

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 的速度。

关于sql - 数据库函数 VS Case 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13284222/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com