HTML5技术

SQL SERVER中用户定义标量函数(scalar user defined function)的性能问题 - 潇湘隐(4)

字号+ 作者:H5之家 来源:H5之家 2016-01-26 15:00 我要评论( )

这个跟我测试的数据有所出入(可能跟数据库版本、机器配置有一点关系)。但是大体方向是一致的。Avg CPU Time和Avg Elapsed Time 执行时间依然Function, no distinct subquery Function, subquery = Inline calcula

这个跟我测试的数据有所出入(可能跟数据库版本、机器配置有一点关系)。但是大体方向是一致的。Avg CPU Time和Avg Elapsed Time 执行时间依然Function, no distinct subquery  > Function, subquery = Inline calculation, subquery > Inline calculation, no distinct subquery

那么接下来,我们先进一个表值函数Triple_tbl,对比表值函数和标量函数的性能。如下所示

CREATE FUNCTION dbo.Triple_tbl (@DataVal INT)RETURNS TABLE ASRETURNSELECT @DataVal * 3 TripleGO  DBCC DROPCLEANBUFFERS WITH NO_INFOMSGS;SET STATISTICS TIME ON;  SELECT MAX(dbo.Triple(DataVal)) AS MaxTriple FROM (SELECT DISTINCT DataVal FROM dbo.LargeTable) AS d;  SELECT MAX(3 * DataVal) AS MaxTriple FROM dbo.LargeTable AS d;  SELECT MAX(t.Triple) AS MaxTripleFROM dbo.LargeTable lCROSS APPLY dbo.Triple_tbl(l.DataVal) t SET STATISTICS TIME OFF;GO

从下可以看出,表值函数比标量函数性能要好很多,所以用表值函数替换标量函数也是一个可以考虑的优化方案。

clipboard[13]

 

参考资料:

https://www.captechconsulting.com/blogs/performance-considerations-of-user-defined-functions-in-sql-server-2012

https://connect.microsoft.com/SQLServer/feedback/details/524983/user-defined-function-performance-is-unacceptable

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • Android 代码库(自定义一套 Dialog通用提示框 ) - 小小情意

    Android 代码库(自定义一套 Dialog通用提示框 ) - 小小情意

    2017-04-21 11:01

  • 自定义input默认placeholder样式 - 小碎步

    自定义input默认placeholder样式 - 小碎步

    2017-04-20 13:00

  • 腾讯云数据库团队:SQL Server 数据加密功能解析 - 腾讯云技术社区

    腾讯云数据库团队:SQL Server 数据加密功能解析 - 腾讯云技术社区

    2017-03-17 10:00

  • Omi实战-QQ附近用户列表Web页 - 【当耐特】

    Omi实战-QQ附近用户列表Web页 - 【当耐特】

    2017-02-24 09:33

网友点评
s