青岛高端网站制作,如何自己做留言板网站,企业产品展示型网站案例,做网站开发使用百分比的好处Atitit 数据存储的分组聚合 groupby的实现attilax总结 1. 聚合操作1 1.1. a、标量聚合 流聚合1 1.2. b、哈希聚合2 1.3. 所有的最优计划的选择都是基于现有统计信息来评估3 1.4. 参考资料3 1. 聚合操作 聚合也是我们在写T-SQL语句的时候经常遇到的#xff0c;我们来分析一下一… Atitit 数据存储的分组聚合 groupby的实现attilax总结 1. 聚合操作1 1.1. a、标量聚合 流聚合1 1.2. b、哈希聚合2 1.3. 所有的最优计划的选择都是基于现有统计信息来评估3 1.4. 参考资料3 1. 聚合操作 聚合也是我们在写T-SQL语句的时候经常遇到的我们来分析一下一些常用的聚合操作运算符的特性和可优化项。 1.1. a、标量聚合 流聚合 标量聚合是一种常用的数据聚合方式比如我们写的语句中利用的以下聚合函数MAX()、MIN()、AVG()、COUNT()、SUM() 以上的这些数据结果项的输出基本都是通过流聚合的方式产生并且这个运算符也被称为标量聚合 其实流聚合这种算法最常用的方式是分组GROUP BY计算上面的标量计算也是利用这个特性只不过把整体形成了一个大组进行聚合。 我么通过如下代码理解 clear the current aggredate results clear the current group by columnsfor each input row begin if the input row does not match the current group by columns begin output the current aggreagate results(if any) clear the current aggreagate results set the current group by columns to the input row end update the aggregate results with the input row end 流聚合运算符其实过程很简单维护一个聚合组和聚合值依次扫描表中的数据如果能不匹配聚合组则忽略如果匹配则加入到聚合组中并且更新聚合值结果项。 举个例子 SELECT ShipAddress,ShipCity,COUNT(*) FROM Orders GROUP BY ShipAddress,ShipCity 所以这里我们已经总结出对于流聚合的一种优化方式尽量避免排序产生而要避免排序就需要将分组Group by字段在索引覆盖范围内。 1.2. b、哈希聚合 上述的流聚合的方式需要提前排序我们知道排序是一个非常大的消耗过程所以不适合大表的分组聚合操作为了解决这个问题又引入了另外一种聚合运算哈希聚合 所谓的哈希聚合内部的方法和本篇前面提到的哈希连接机制一样。 哈希聚合不需要排序和过大的内存消耗并且很容易并行执行计划利用多CPU同步进行但是有一个缺点就是这一过程是阻塞的也就说哈希聚合不会产生任何结果直到完整的输入。 所以在大数据表中采用哈希聚合是一个很好的应用场景。 我们知道排序是很耗资源的一件事情但是利用哈希匹配只需要将不同的列值进行提取就可以所以相比性能而言无疑哈希匹配算法在这里是略胜一筹的算法。 1.3. 所有的最优计划的选择都是基于现有统计信息来评估 而上面关于这两列内容分布类型SQL Server是怎样知道的这就是SQL Server的强大的统计信息在支撑了。 在SQL Server中并不是固定的语句就会形成特定的计划并且生成的特定计划也不是总是最优的这和数据库现有数据表中的内容分布、数据量、数据类型等诸多因素有关而记录这些详细信息的就是统计信息。 所有的最优计划的选择都是基于现有统计信息来评估如果我们的统计信息未及时更新那么所评估出来最优的执行计划将不是最好的有时候反而是最烂的。 1.4. 参考资料 SQL Server调优系列基础篇常用运算符总结——三种物理连接方式剖析 - 指尖流淌 - 博客园.html 作者:: 绰号:老哇的爪子claw of Eagle 偶像破坏者Iconoclast image-smasher 捕鸟王Bird Catcher 王中之王King of Kings 虔诚者Pious 宗教信仰捍卫者 Defender of the Faith. 卡拉卡拉红斗篷 Caracalla red cloak 简称 Emir Attilax Akbar 埃米尔 阿提拉克斯 阿克巴 全名Emir Attilax Akbar bin Mahmud bin attila bin Solomon Al Rapanui 埃米尔 阿提拉克斯 阿克巴 本 马哈茂德 本 阿提拉 本 所罗门 阿尔 拉帕努伊 常用名艾提拉艾龙 EMAIL:1466519819qq.com 转载请注明来源attilax的专栏 http://www.cnblogs.com/attilax/ --Atiend 转载于:https://www.cnblogs.com/attilax/p/6142980.html