sql server中的hash应用优化

news/2024/7/5 1:55:03

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

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

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

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

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


http://lihuaxi.xjx100.cn/news/235615.html

相关文章

研究人员测试27个黑客服务 结果仅三个完成任务

现代电子邮件帐户不仅是一个电子邮件地址,它还是人们在网络上的身份的基础,可用于申请各种网络服务或重置服务密码,以便持有电子邮件的黑客服务帐户很受欢迎,为了了解这些服务的功能,谷歌和加州大学圣地亚哥分校的研究…

Swift 中的内存管理详解

这篇文章是在阅读《The Swift Programming Language》Automatic Reference Counting(ARC,自动引用计数)一章时做的一些笔记,同时参考了其他的一些资料。 在早期的 iOS 开发中,内存管理是由开发者手动来完成的。因为传统…

POJ 1185 炮兵阵地 (状压DP)

炮兵阵地Time Limit: 2000MS Memory Limit: 65536KTotal Submissions: 14869 Accepted: 5575Description 司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队。一个N*M的地图由N行M列组成,地图的每一格可能是山地(用"H" 表示)…

Swift2.x编写NavigationController动态缩放titleView

这两天看到一篇文章iOS 关于navigationBar的一些..中的动态缩放比较有意思,看了一下源码,然后用Swift写了一下,使用storyboard实现. 效果图: 部分代码: 设置滑动代理 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/**设置滑动代理- parameter scrollV…

广播域

广播是一种信息的传播方式,指网络中的某一设备同时向网络中所有的其它设备发送数据,这个数据所能广播到的范围即为广播域(Broadcast Domain)。 广播域就是说如果站点发出一个广播信号后能接收到这个信号的范围。通常来说一个局域网就是一个广播域。广播域…

无法在证书存储区中找到清单签名证书的解决办法

以前的一个项目今天打开忽然提示说“无法在证书存储区中找到清单签名证书”,很郁闷,不知道怎么回事。最好在 工程属性里面--签名--为Clickonce清单签名 去掉 。再次生成居然成功了。不知道具体什么原因引起…

Cron 表达式极速参考

Cron表达式: * * * * * * *这些星号由左到右按顺序代表 : [秒] [分] [小时] [日] [月] [周] [年] 序号说明 是否必填 允许填写的值 允许的通配符1 秒 是 0-59 , - * /2 分 是 0-59…

Swift 中 10 个震惊小伙伴的单行代码

几年前,函数式编程的复兴正值巅峰,一篇介绍 Scala 中 10 个单行函数式代码的博文在网上走红。很快地,一系列使用其他语言实现这些单行代码的文章也随之出现,比如 Haskell,Ruby,Groovy,Clojure&a…