SQL Server:为什么CLR功能比CLR存储过程更快?

时间:2017-11-16 03:00:08

标签: .net sql-server sql-server-2012 sqlclr

我遇到的CLR函数的争论可能比某些人的T-SQL标量函数更快或者另一组人的另一种方式。

我还读到了将CLR函数与CLR存储过程进行比较,并了解到CLR函数比CLR存储过程更快。有人可以用技术解释为什么CLR功能更快吗?

我是CLR的新手,目前正在C#中开发一个用于SQL Server的CLR存储过程。即使经过多次尝试,CLR执行基本上消耗0秒。我还没有尝试在实际的T-SQL存储过程中实现,但我需要这样做以产生预期的结果。所以我想了解执行部分并确定使用哪种方法

1 个答案:

答案 0 :(得分:1)

我认为SQLCLR标量用户定义函数(UDF)必然比SQLCLR存储过程更快。我认为这将取决于操作是什么以及如何使用它。某些SQLCLR UDF能够使用的一个优点是,如果没有数据访问(有时虽然并非总是如果IsDeterministic设置为true),但他们可以参与平行计划。这不是T-SQL UDF可以做的事情。因此,对于可以在UDF中完成的操作(不是全部可以,有些需要在存储过程中完成),不进行任何数据访问,并且在单个查询中重复调用,这可以提供存储过程的性能改进,无法以基于集合的方式调用。

有关使用SQLCLR的更多信息,请参阅我正在撰写的有关SQL Server Central主题的一系列文章:Stairway to SQLCLR

P.S。如果您要声明您“遇到了辩论”,然后“阅读”某个主题,那么您应该提供这些讨论和文章/帖子的链接,假设它们不在私人论坛或公司内部网上。了解所说内容的背景确实很有帮助,尤其是帮助确保您不仅仅是误读/误解了您所发现的内容(是的,已经发生了这种情况)。