SQLServer聚合函数算法优化技术研究

SQL Server聚合函数被广泛应用于实际工作中的各种需要。当然,聚合函数的优化也成为一个关键点。一个程序是否优化的好坏直接决定了这个项目的申报期。SQL Server聚集函数计算一组值并返回单个值。聚合函数计算一组值并返回单个值。除了计数,聚合函数忽略空值的聚合函数。常用的选择语句组。

1。在前面写

如果您有一个不熟悉或被遗忘的SQL Server聚合函数,您可以在我之前看到一个blog。

在这篇文章中所有的数据都在微软的官方示例数据库显示:北风,至于Northwind,你也可以下载互联网上的。

两个SQL服务器标量聚合

2.1。概念:聚合函数(如min()()、马克斯()、()和(),计数,或AVG()中的SELECT语句只包含聚合函数的列列表中指定的列的列表),只包含聚合函数,结果集只有一行给料的价值,这是由源行WHERE子句谓词匹配计算。

2.2。探索标量聚合:

我们首先查看SQL Server包括实际执行计划,查看一个简单的流聚合计数()来查看内部数据中的所有数据行。


然后,我们可以通过设置showplan_all上看到关于监外执行的详细信息(在输出中的列的更多信息),并估计这句话对资源的要求。

Through SET SHOWPLAN_ALL ON, let's look at COUNT () to do those things:

索引扫描:扫描当前表中的行数
流计算:计算行数
计算标量:流量计算成适当类型的结果(因为索引扫描的结果是由表中数据的大小决定的。如果表中有大量数据,计数将是int类型,所以当涉及到大类型时,会出现问题,所以当我们最终返回时,我们需要将默认类型(一般默认类型是大的)转换为int类型。
摘要:通过建立showplan_all,我们可以看到SQL聚合函数为我们做了最后的效果呈现。


2.3。标量聚集优化技术:
让我们看看两个简单SQL查询之间的区别
复制代码如下:select count(不同的ShipCity)从ordersselect计数(明显的OrderId)从订单

正如您从上面看到的,实际上这两个查询与语句没有多大区别,但是为什么开销不同呢。一个是查询的城市,其他的是查询订单号。这是因为,事实上,不同的订单号查询是没有意义的,因为行是主键,没有重复,ShipCity将会重演,与SQL Server的重量去除机理将有一个过程的时候重。这种分类仍然是消耗更多的资源。
在大数据量表是不是真的推荐排序大型表或使用重复大量的大型表的领域。所以我们可以优化的ShipCity这里。非聚集索引可以创建ShipCity。
复制代码如下:创建订单指数index_shipcity(ShipCity降序)

正如你可以看到从上面的计数查询(不同的ShipCity)指数后成为两流聚合,没有排序,节约开销。
例如,从上面的例子可以看到标量聚合的例子,标量聚合的优点和缺点是显而易见的:

SQL Server标量聚合优点:算法简单直观,适合于非重复值的聚合操作。
优化技术:尽量避免排序,并在索引覆盖范围内逐段锁定组。


三、sql服务器散列聚合

3.1。概念:

Hashi(hash),在一般的翻译,也是Hashi直接音译。它是将任意长度的输入(也叫做预映射,图像预处理)通过散列算法成固定长度的输出,而输出的散列值。这种转变是一个压缩映射,即散列值的空间通常比输入空间小得多,不同的输入可能会散列成相同的输出,所以它是不可能从哈希值确定输入值,一个简单的方法,它是一个函数,压缩任何消息任何长度的一定长度的消息摘要。)

Hashi聚集的内部实现是哈市连接的实现机制。它需要哈希函数的内部运作形成不同的哈希值,然后扫描数据并行形成聚合值。

3.2。背景:

为了解决流聚合的不足和处理大数据的操作,哈希聚合诞生了。

3.3。分析:

查看两个简单的查询。


对shipcountry和CustomerID看起来非常相似的组查询执行计划,但是为什么不同这是因为shipcountry包含大量重复的值,CustomerID重复很少,所以SQL Server系统推动哈希聚集到ShipCountry,而CustomerID将流聚集。也就是说,SQL Server系统会根据查询动态选择合适的聚合模式。所以当我们做SQL优化,我们不能只优化根据SQL语句,但我们也要结合具体的数据分布环境。

四。作业过程监控指标

4.1。监控单元:

可视化运行T-SQL语句查询时间的T-SQL语句查询的IO占用内存

4.2。可视化运行时间:

4.3.t-sql语句查询时间:



4.4。占用的内存:



的4.5.t-sql语句查询的IO:



有很多监控元素,这里有几个。

这里详细介绍了SQL Server聚合函数算法优化技术,希望能帮助您优化聚合函数算法。