首页 > 解决方案 > SQL 存储过程的 select 语句中标量函数的备用选项

问题描述

我有一个存储过程来从我的数据库中获取客户列表。在那个 SP 中,我在选择查询中调用了 2 个标量函数,这严重影响了性能。

标量函数有多个 if 操作来检查多个案例并获取客户许可证信息,因此在内联中使用此查询更加复杂。

我知道在 select 语句中使用标量函数每次都会调用一些可用的行。

我怀疑避免这种性能影响的最佳替代方法是什么。

提前致谢。

标签: sql-servertsqlstored-proceduresuser-defined-functions

解决方案


该函数减慢您的 SP 的部分原因是,在创建执行计划时,没有考虑函数的内部结构。所以首先,使代码成为内联代码会提高性能。但我同意它可能非常难看,应该避免。

您可能应该使用临时表预先准备数据,但是如果没有看到代码就很难说


推荐阅读