SQL Server:为什么CLR函数比CLR存储过程快



我遇到了一个争论,即CLR函数对某些人来说可能比T-SQL标量函数快,而对另一群人来说则相反。

我还阅读了CLR函数和CLR存储过程的比较,了解到CLR函数比CLR存储过程更快。有人能从技术上向我解释一下为什么CLR函数更快吗?

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

我认为SQLCLR标量用户定义函数(UDF)不一定比SQLCLR存储过程快。我认为这将取决于手术是什么以及如何使用。一些SQLCLR UDF能够利用的一个优势是,如果没有数据访问(有时,尽管不总是,如果IsDeterministic设置为true),那么它们可以参与并行计划。T-SQL UDF不能做到这一点。因此,对于可以在UDF中完成的操作(并非所有操作都可以,有些操作需要在存储过程中完成)、不进行任何数据访问的操作以及在单个查询中重复调用的操作,这可以比存储过程提高性能,因为存储过程不能以基于集合的方式调用。

有关一般使用SQLCLR的更多信息,请参阅我正在撰写的关于SQLServerCentral:SQLCLR 的阶梯主题的系列文章

附言:如果你打算说你"遇到了一场辩论",然后"阅读"了一些话题,你真的应该提供这些讨论和文章/帖子的链接,假设它们不在私人论坛或公司内部网上。了解所说内容的背景确实很有帮助,尤其是有助于确保你不会简单地误读/误解你所发现的内容(是的,这已经发生了)。

最新更新