【问题标题】:SQL Server: Why CLR Function is faster than CLR Stored Procedure?SQL Server:为什么 CLR 函数比 CLR 存储过程快?
【发布时间】:2018-04-29 11:18:48
【问题描述】:

我遇到了这样的争论:对于某些人来说,CLR 函数可能比 T-SQL 标量函数更快,或者对于另一群人来说,反之亦然。

我还阅读了有关将 CLR 函数与 CLR 存储过程进行比较的内容,并且了解到 CLR 函数比 CLR 存储过程快。有人可以从技术上向我解释为什么 CLR 函数更快吗?

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

【问题讨论】:

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


    【解决方案1】:

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

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

    附:如果您要声明您“遇到了一场辩论”然后“阅读”了某个主题,那么您真的应该提供这些讨论和文章/帖子的链接,假设它们不在私人论坛或公司内部网上.了解所讲内容的上下文确实很有帮助,尤其是有助于确保您不会简单地误读/误解您发现的内容(是的,这已经发生了)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-14
      • 1970-01-01
      • 2023-03-20
      • 2017-08-22
      • 2011-06-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多