场 景

对于大表,为了加速期查询速度,往往在外键上加索引、Java集合类中HashMap使用的很频繁等等,而对于索引存储与散列存储的理解一直不清晰。

问 题

索引存储与散列存储怎么理解

分 析

房间比作存储单元,房间号比作存储单元地址。问题来了,如何快速在一家酒店找到自己的灵魂伴侣呢?这里先假设她(或者他)肯定在某一房间内,身份证作为关键字,你只知道她的身份证号码,长啥样你不知道。首先,数据的存储方式决定其查找方式:

  • 顺序存储
    你就只能拿着身份证号码一层一层一间房一间房去找了:费劲啊,时间复杂度n/2;这里应该还涉及到数据安全问题:你不一定又钥匙,她也不一定相信你,让你比对身份证号码。
  • 链式存储
    相对顺序存储,链式存储对存储空间的物理位置没有要求:假设酒店有10间房子,顺序存储要求10间房子物理位置相邻,而后者10间房可以分散在不同层且不相邻。查找时间复杂度:n/2―还是得拿着身份证挨房去查找。
  • 索引存储
    存的时候比较费劲,除了存储节点本身信息外还得花费额外空间建立,存储并维护索引表(个人理解,索引存储应该属于顺序存储与链式存储的一种:节点位置要么相邻要么不相邻)。这时只要根据灵魂伴侣的身份证号码,查表(怎么查呢,得看怎么存储,递归),就可以知道她在那间房了,狠开心。时间复杂度:常量级。空间复杂度:比顺序链式要高。
  • 散列存储
    根据身份证通过散列函数直接算(而不是查表)出她的房间号。时间复杂读:常量级。其他(待了解):由于用到散列函数,需要额外计算单元支持。

总 结

散列或者索引存储是为了提高查询效率,而在存储数据的时候,除了节点实际数据,还存储了其他提高查询数据效率的因子(表,计算单元,或者其他)


写于 2016年2月

对索引存储与散列存储的一些形而上的思考相关推荐

  1. 存储结构分四类:顺序存储、链接存储、索引存储 和 散列存储

    存储结构分四类:顺序存储.链接存储.索引存储 和 散列存储. 顺序结构和链接结构适用在内存结构中. 顺序表每个单元都是按物理顺序排列的,如果你想访问那个单元你可以根据提供的指针等直接访问到需要的东西, ...

  2. 索引存储和散列存储(哈希)的区别吧

    两者都一定的相似性,可以加快检索速度,是一种存储结构. 但是索引的方式相当于给一个本书加一个目录,这样子就可以快速找到每一个章节.好处就是增加检索速度,坏处就是增加了书的厚度,而且如果改变了书的内容, ...

  3. 数据的逻辑结构(线性结构、非线性结构;集合结构、树状结构、网状结构),数据的存储结构(顺序结构、链式结构、索引结构、散列结构)

    数据的逻辑结构 数据的逻辑结构指数据元素之间的逻辑关系(和实现无关). 分类1:线性结构和非线性结构 线性结构:有且只有一个开始结点和一个终端结点,并且所有结点都最多只有一个直接前驱和一个直接后继. ...

  4. 数据的逻辑结构(线性结构、非线性结构;集合结构、线性结构、树状结构、网状结构),数据的存储结构(顺序结构、链式结构、索引结构、散列结构)

    数据的逻辑结构 数据的逻辑结构指数据元素之间的逻辑关系(和实现无关). 分类1:线性结构和非线性结构 线性结构:有且只有一个开始结点和一个终端结点,并且所有结点都最多只有一个直接前驱和一个直接后继. ...

  5. mysql 散列存储_什么是数据库散列存储? - 蚂蚁吞大象的个人空间 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...

    什么是数据库散列存储? 上一篇 / 下一篇  2012-11-30 17:25:03 / 个人分类:数据库 (转载自百度空间http://hi.baidu.com/pplboy/item/2d7a26 ...

  6. 行存储索引改换成列存储索引_如何使用列存储索引来改善数据仓库登台环境

    行存储索引改换成列存储索引 My team and I were recently tasked with refactoring older data marts, particularly tho ...

  7. 数据结构(顺序结构、链式结构、索引结构、散列结构)

    文章目录 1.概述 2.数据间逻辑关系 3.数据的存储结构(或物理结构) 3.1顺序结构 3.2链式结构 3.3索引结构 3.4散列结构 4.运算结构 1.概述 数据结构,就是一种程序设计优化的方法论 ...

  8. 数据结构 || 二维数组按行存储和按列存储

    问题描述: 设有数组A[n,m],数组的每个元素长度为3字节,n的值为1-8,m的值为1-10,数组从内存收地址BA开始顺序存放,请分别用列存储方式和行存储方式求A[5,8]的存储首地址为多少? 解题 ...

  9. SQL Server 2016新特性:列存储索引新特性

    SQL Server 2016新特性:列存储索引新特性 行存储表可以有一个可更新的列存储索引,之前非聚集的列存储索引是只读的. 非聚集的列存储索引支持筛选条件. 在内存优化表中可以有一个列存储索引,可 ...

  10. HashMap散列无序存储测试

    为什么80%的码农都做不了架构师?>>>    package com.boonya.map; import java.util.HashMap; import java.util. ...

最新文章

  1. pandas使用组合条件筛选、过滤数据行
  2. 微信8年,你从中学到了什么?
  3. [零基础学JAVA]Java SE应用部分-32.Java网络编程
  4. springboot教程-web(二)
  5. redis 源码 zmalloc.c 实现
  6. word2003计算机考试题,[2018职称计算机Word2003考前练习题] 2018年职称计算机考试练习题库...
  7. 洛谷P1962 斐波那契数列
  8. mysql dump h_mysqldump
  9. 修改ASP.NET MVC Ajax分页组件ASP.NET MvcPager一个小Bug并修该样式为自己所用(三)...
  10. MOSS提升权限方法
  11. 多媒体计算机辅助英语教学,多媒体计算机辅助英语教学初探
  12. HTML字体转为大写,css字体属性和英文大小写转换
  13. 制作Lightbox效果
  14. python金山词霸单词本批量导入
  15. 2021年N1叉车司机复审考试及N1叉车司机模拟试题
  16. URP实现毛玻璃效果一
  17. 系统集成项目管理工程师英语词汇
  18. scrapy爬取苏宁所有图书
  19. 深度解密京东登月平台基础架构
  20. 苹果进入“复古时代”?

热门文章

  1. 使用smartping监控服务器的网络可用性
  2. 信息奥赛一本通1196:踩方格
  3. 谈谈《人生七年》这部纪录片
  4. opencv-图像阈值
  5. PHP实现站点pv,uv统计(一)
  6. java 定时关机_win7电脑怎么设置定时关机_win7电脑设置定时关机的详细教程-win7之家...
  7. opencv图像处理及视频处理基本操作
  8. 使用python切分mp4视频并保存每帧图像
  9. linux 中meltdown指令,宇宙最强,meltdown论文中英文对照版(二)
  10. android 摄像头黑屏,5+app 安卓调用摄像头黑屏 苹果可以