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聚合。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16436858/viewspace-617120/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/16436858/viewspace-617120/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值