扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:Arthur Fuller 来源:builder 2007年9月16日
关键字: Hash 数据库 SQL Server SQL Server 各版本
尝试运行这段样本代码,它表明如何获得指定值或值组合的hash关键字:
USE AdventureWorks |
所得的结果显示在下表中(为求简洁,只选用了10个结果)。
名称 |
组名称 |
hash关键字 |
工具设计 |
研究与开发 |
-2142514043 |
生产 |
制造 |
-2110292704 |
发货与收货 |
存货管理 |
-1405505115 |
购买 |
存货管理 |
-1264922199 |
文件控制 |
质量保证 |
-922796840 |
信息服务 |
总执行管理 |
-904518583 |
质量保证 |
质量保证 |
-846578145 |
销售 |
销售与营销 |
-493399545 |
生产控制 |
制造 |
-216183716 |
营销 |
销售与营销 |
-150901473 |
在现实环境中,你可以建立一个调用Name_GroupName_hb的计算列。假设前端传入名称(Name)与组名称(GroupName)的目标值,你就可以用下列代码来处理这一问题:
CREATE PROCEDURE DemoHash |
想象一下,在一个5 000万行的表格中,返回了100行指定的hash关键字。由于这两个列没有其它的目录,查询优化器就应用hash桶目录。这样就可以快速地隔离出100个感兴趣的行。然后我们访问这些行,检验名称(Name)与组名称(GroupName)列来进行精确匹配。这样就大大提高了性能,同时节省了大量的磁盘空间。
引例假设搜索目标存在于一个单独的表格中。假如要从多个表格中选择目标来进行搜索,也可以应用同样的技巧。只需建立一个连接表格的表格函数,然后建立一个hash不同表格列的目录即可。
结论
在相对较小的表格中,建立一个目录hash桶对于提高性能可能没有太大的作用,但这样做可节省磁盘空间。如果你使用大型的表格,本技巧就极为实用。
Arthur Fuller从事数据库应用程序开发20余年。在Access ADP、微软SQL 2000、MySQL和.NET方面有丰富的经验。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者