首页 存档 技术 查看内容

SQLServer聚合函数算法优化技巧

2018-3-30 13:00 |来自: 互联网 519 0

摘要: (点击上方公号,可快速关注) 作者:头头哥 网址:http://www.cnblogs.com/toutou/p/5002996.html 博客前言 Sql server聚合函数在实际工作中应对各种需求使用的还是很广泛的,对于聚合函数的优化自然也就成为了 ...

(点击上方公号,可快速关注)


作者:头头哥

网址:http://www.cnblogs.com/toutou/p/5002996.html


博客前言

Sql server聚合函数在实际工作中应对各种需求使用的还是很广泛的,对于聚合函数的优化自然也就成为了一个重点,一个程序优化的好不好直接决定了这个程序的声明周期。Sql server聚合函数对一组值执行计算并返回单一的值。聚合函数对一组值执行计算,并返回单个值。除了 COUNT 以外,聚合函数都会忽略空值。 聚合函数经常与 SELECT 语句的 GROUP BY 子句一起使用。

1.写在前面

本文中所有数据演示都是用Microsoft官方示例数据库:Northwind,至于Northwind大家也可以在网上下载。至于下载方法MSDN已经有了详细的说明了,这里就不多说了。


2.Sql server标量聚合


2.1.概念:

在只包含聚合函数的 SELECT 语句列列表中指定的一种聚合函数(如 MIN()、MAX()、COUNT()、SUM() 或 AVG())。当列列表只包含聚合函数时,则结果集只具有一个行给出聚合值,该值由与 WHERE 子句谓词相匹配的源行计算得到。

2.2.探索标量聚合:

我们先用Sql server的”包括实际的执行计划”来看看一个简单的流聚合COUNT()来看看表里数据所有的行数。

再通过SET SHOWPLAN_ALL ON来看看有关语句执行情况的详细信息,并估计语句对资源的需求。

通过SET SHOWPLAN_ALL ON我们来看看COUNT()具体做了那些事情:

  • 索引扫描:扫描当前表的行数

  • 流计算:计算行数的数量

  • 计算标量:将流计算出来的结果转化为适当的类型。(因为索引扫描出来的结果是根据表中数据的大小决定的,如果表中数据很多的话,COUNT是int类型就会有问题,所以在最终返回的时候需要将默认类型(数值一般默认类型是Big)转成int类型。)

  • 小结:通过SET SHOWPLAN_ALL ON我们可以查看Sql server聚合函数在给我们呈现最终效果的时候,为这个效果做了些什么事情。


2.3.标量聚合优化技巧:

我们通过两个比较简单的sql查询来看看他们的区别

SELECT COUNT(DISTINCT ShipCity) FROM Orders

本文转载自:微信公众账号 - 数据库开发,版权归原作者所有!

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部