随笔 - 120  文章 - 0  评论 - 902  阅读 - 51万

sql server中的hash应用优化

sql server很多地方用到hash,计划缓存查找,hash连接,hash聚合等。

hash查找mssql很多设计中都应用了,不过我们能在开发设计中,也可以利用这个特性。

将如果有需求对大文本进行完全匹配,比如查找产品型号(较长字符串),那么可以建立一个产品型号的hash字段,然后在hash字段上进行查找,不过最重要的是如果匹配成功,还不要忘记在where上再加一个条件,就是原始产品型号字段的一致,因为存在极为渺小的可能不同文本能整成一个hash。

hash连接方面,mssql一般都是对于超大数据集而言,对于hash连接的优化,需要区分连接的大小表,以确定构建表和探索表,由于构建表先行,而且hash连接都是超大表的连接,所以需要特别节省内存,在hash节省内存方面的优化,主要是对于查询树的形状进行规划,左深度,右深度,浓密度,有时候需要强制定位hash顺序,指定构建表,有时候需要跟踪是不是会被交换到虚拟文件上,这就需要跟踪救助算法。还有如果连接字段需要查看统计信息是否正常,如果不正常导致系统采用hash,就先更新统计,再看看系统是否还整成hash运算符。

hash聚合如果也和连接差不多,主要在于如果聚合字段分组较少,那么对hash聚合非常有利,内存很省,如果又有排序, 那最好采用流聚合。不过一般情况下除非统计信息出错,否则优化器都能正确选择流聚合和hash聚合。

posted on   Keep Walking  阅读(2373)  评论(1编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
< 2009年10月 >
27 28 29 30 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
1 2 3 4 5 6 7

点击右上角即可分享
微信分享提示