位置: 编程技术 - 正文

SQL Server2014 哈希索引原理详解(sql hash)

编辑:rootadmin

推荐整理分享SQL Server2014 哈希索引原理详解(sql hash),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mysql哈希表,sql hash,sql server hash join,sql_hash_value,数据库哈希索引,数据库 哈希,数据库 哈希,sql hash,内容如对您有帮助,希望把文章链接给更多的朋友!

当一个key-value键值对传递给一个哈希函数的时候,经过哈希函数的计算之后,根据结果会把key-value键值对放在合适的hash buckets(哈希存储桶)里

举个栗子

我们假设对取模( % )就是哈希函数。如果key-value键值对的key是 ,传递到哈希函数,那么 会存放在第五个bucket里

因为5 as % = 5。

同样, 会存放在第七个bucket , 会存放在第二个bucket ,依次类推

同样,在hash index里面,哈希索引列会被传递给哈希函数做匹配(类似于java里面的HashMap的Map操作),匹配成功之后,

索引列会被存储在匹配到的hash bucket里面的表里,这个表里会有实际的数据行指针,再根据实际的数据行指针查找对应的数据行。

概括来说,要查找一行数据或者处理一个where子句,SQL Server引擎需要做下面几件事

1、根据where条件里面的参数生成合适的哈希函数

2、索引列进行匹配,匹配到对应hash bucket,找到对应hash bucket意味着也找到了对应的数据行指针(row pointer)

3、读取数据

SQL Server2014 哈希索引原理详解(sql hash)

哈希索引比起B树索引简单,因为它不需要遍历B树,所以访问速度会更快

Notice: Undefined index: CMSdown in /data/webroot/gcms/lib/Api/Open/Article.php on line img////_a1dad8f.jpg" alt="查看图片" />

哈希函数和相应语法的例子

在SQL Server 里面,内存优化表创建完之后就不能再加哈希索引了,但是在 SQL Server 里支持表创建完之后添加哈希索引,不过

添加哈希索引是一个离线操作。

哈希索引的Bucket 数量

( BUCKET_COUNT = )定义了哈希索引能够使用的BUCKET数量,这个Bucket 是固定的并且由用户指定Bucket 数量,

而不是执行查询的时候由SQL Server决定生成的Bucket 数量。BUCKET数量总是2的次方的四舍五入( , , etc..)

SQL Server的哈希索引其实跟MySQL的自适应哈希索引原理其实差不多,都是为了摆脱B树的束缚,使查找效率更快

How does a relational database work这篇文章也有描述hash join的原理,大家可以看一下

Notice: Undefined index: CMSdown in /data/webroot/gcms/lib/Api/Open/Article.php on line img////_a1dae.png" alt="查看图片" />

Notice: Undefined index: CMSdown in /data/webroot/gcms/lib/Api/Open/Article.php on line img////_a1dae6be1c.png" alt="查看图片" />

非常好用的sql语句(日常整理) 1./*得到trace文件路径和名称*/SELECTd.VALUE||'/'||LOWER(RTRIM(i.INSTANCE,CHR(0)))||'_ora_'||p.spid||'.trc'trace_file_nameFROM(SELECTp.spidFROMv$mystatm,v$sessions,v$processpWHEREm.statistic#=1

安装完成后如何找回SQL Server实例安装时的序列号 当需要再次安装SQLServer时,如果序列号找不到了,可以试着从已经安装的实例里找回序列号,因为安装完SQLServer后,序列号(ProductKey)被保存在注册表里

一步步教你建立SQL数据库的表分区 直接上步骤:1)新建一个数据库2)添加几个文件组3)回到常规选项卡,添加数据库文件看到用红色框框起来的地方没上一步中建立的文件组在这里就用上了

标签: sql hash

本文链接地址:https://www.jiuchutong.com/biancheng/347397.html 转载请保留说明!

上一篇:SQLSERVER SQL性能优化技巧(sql数据库性能)

下一篇:非常好用的sql语句(日常整理)(sql常用语句大全简书)

  • 增值税发票税控开票软件
  • 哪些资产损失应向税务机关申报扣除?
  • 支付给境外个人的租金
  • 什么是抄报税成功
  • 保险公司代征的税收
  • 个税代扣代缴手续费返还 申请
  • 开现代服务发票有什么要求吗
  • 个人股权转让给公司
  • 外购的商誉如何做账
  • 计提坏账的递延税收
  • 公司买车付首付款个人还贷怎么做会计分录
  • 将承兑汇票背书怎么操作
  • 一般纳税人进货收到普通发票
  • 金税三期有什么功能
  • 增值税税控系统专用设备注销发行
  • 出售房产收入计入什么科目
  • 预缴纳税申报失败怎么办
  • 网税系统用户名和密码
  • 更换银行印鉴需要本人吗
  • 公司租土地建厂房应该怎么做账呢?
  • 一般纳税人减免的增值税怎么记账
  • 加计抵减是什么时候开始的
  • 事业单位净资产怎么计算?净资产怎么算
  • 老板垫付的钱应该怎么做科目
  • 投入法和产出法的确定属于会计估计变更吗
  • nvsvc.exe - nvsvc是什么进程 有什么用
  • php上传文件夹
  • 台式电脑清洗步骤图解
  • 长期借款利息的会计科目
  • 鼓励证券投资基金的政策
  • 酒店客房成本构成
  • 溢价收购股权会计处理案例
  • 一万字综述怎么写
  • javascript速成要多久
  • css中清除浮动
  • 报错专业怎么补救
  • 单位购日用品计提折旧吗
  • 年金现值系数和年金终值系数的公式
  • 公司还款给个人怎么操作
  • 帝国cms如何使用
  • 商品售后回购分录
  • 现金流量表里包括应收票据吗
  • 增值税附表3
  • 公司银行销户钱转到哪里去
  • mysql日志文件在哪
  • 主营业务成本包括哪些
  • 评估增值净利润调减
  • 融资租赁固定资产不属于筹资活动
  • 总公司给分公司拨款属于什么
  • 罚款是营业外支出还是管理费用
  • 招待费进项税额可以抵扣吗
  • 在外地设办事处需要办什么手续
  • 充油卡未收发票怎么办
  • 增值税专用发票几个点
  • 应收利息和利息收入的差额
  • 未开票收入账上税率按多少
  • 总公司是否可以注销分公司
  • win10系统提醒
  • win10修改默认
  • win7切换输入法的快捷键怎么设置
  • msoobe.exe是什么
  • mac未能分区
  • win7系统无法自动检测此网络的代理设置
  • Linux下OpenVPN配置静态密钥(static-key)验证教程
  • opengl示例
  • javascriptz
  • Extjs gridpanel 出现横向滚动条问题的解决方法
  • nodejs连接达梦数据库
  • Android 让EditText失去焦点避免自动弹出输入法
  • unity3d连接数据库
  • JavaScript中的变量名不区分大小写
  • shell脚本中计算变量除法
  • android网络请求时怎么取消
  • Unity3d C# Socket 下载文件 (同步向)
  • python和微信交互
  • 安卓listview添加数据
  • jquery的哪个方法可以绑定mouseover
  • android设置音量
  • 夫妻双方房子契税怎么算
  • 银行存款利息收入现金流量表计入哪
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设