2

SQL Server 允许您创建 CLR 函数、存储过程、用户类型和其他对象,以便在 SQL 中完成非常复杂的目的。

但是,有人可以在性能、优势等方面比较这两个东西:TSQL 对象和 CLR 对象。

使用 CLR 对象的真实情况是什么?

他们的使用是否有任何最佳实践建议?

4

2 回答 2

0

使用 CLR 对象的真实情况是什么?

SQL Server 缺少聚合字符串连接函数。这种奇怪的疏忽导致了各种复杂的变通方法。

创建和使用自定义 CLR 聚合函数是解决此问题的一个干净的解决方案,实际上是 MSDN 文章中关于自定义聚合函数主题的参考示例:

http://msdn.microsoft.com/en-us/library/ms131056.aspx

表现

有一篇 MSDN 文章至少提供了一个理论(无指标)概述:

http://msdn.microsoft.com/en-us/library/ms131075.aspx

这是来自 AboutSqlServer.com 的更实用的帖子(带有指标):

http://aboutsqlserver.com/2013/07/22/clr-vs-t-sql-performance-considerations/

于 2014-08-28T06:13:14.483 回答
0

这里有两个问题需要单独解决。

  1. 在功能和好处方面,我写了一篇文章(关于 SQLCLR 主题的系列文章的一部分),该文章着眼于 SQLCLR 的哪些用途是“合适的”,主要是通过查看它可以做哪些其他方式无法做到的事情,或者不几乎一样容易。那篇文章是“ Stairway to SQLCLR Level 1: What is SQLCLR? ”(需要免费注册),它总结在对问题的评论中链接的问题的答案中,SQL SERVER CLR 的优势

  2. 在性能方面,我在几年前(2011 年 7 月)发表了一项研究,详细介绍了各种场景并测试了原始 SQL、T-SQL 函数中的 SQL 以及基于 CLR 的函数中的算法。我测试了标量函数和表值函数。那篇文章是“ CLR 性能测试”(无需注册)。请记住,测试是在 SQL Server 2008 上完成的,并且在 SQL Server 2012 中对基于 CLR 的确定性标量函数进行了性能改进。这意味着,如果不是更新版本,至少在 SQL Server 2012 上重新运行这些测试,CLR 函数的性能结果会更好。但是结论,即使在 SQL Server 2008 上没有有这些改进,是它取决于许多因素,有时 CLR 更快,有时 T-SQL 更快。但是,大多数情况下,可以用简单到适度的 T-SQL 作为查询的一部分表达的公式,而不是抽象为任一类型的函数,是迄今为止最快的。

于 2014-09-16T19:21:38.843 回答