如果你经常去酒店,你会看到一块类似下面的标牌,指引你到达房间。这能够帮助你方便快速地找到房间,特别是当酒店拥有许多房间时。

以一个有9层的酒店为例。你的房间号是917。第一步是找到你的房间在哪一层,通常第一个数字表示楼层。这意味着你的房间在第9层。你直接就找到了自己所在的楼层,如果没有这个信息,你就需要在酒店的每一层都进行搜索才能找到自己的房间。

现在你到达了自己所在的楼层,你在路口处看到了一个标牌。标牌左边的房间号范围是916–937,右边的房间号范围是939–967。

你已经知道自己的房间号,所以你快速检查了这两个范围。第一个范围包含了你的917房间,所以你向左走。你已经减少了28个房间的搜索范围。

你很幸运,只需检查两个房间就找到了自己的房间,你无需再检查其他的20个房间。在一个有51个房间的楼层中,你只检查了两个房间就找到了自己的房间。

这就是B-树索引的工作原理,除了每个访问的节点是一个标牌,它不一定包含两个范围,而是多个范围。每个标牌将带你到另一个带有较少项的标牌。

基本原理

索引的目标是消除集合。这是数据库索引的基本原理。在一个拥有十亿行的表中进行搜索的最佳方法是避免搜索十亿行。

有些酒店可能有很多楼层,它们将电梯按楼层划分,以分散人流量并减少电梯的负荷。如果一个酒店有100层,可能会有两组电梯(1-50和51-100)。这也是一种常见的做法。

现在,如果酒店只有6个房间,为了为客人设置标牌可能会令人困惑且耗时,更不用说酒店建造标牌的成本了。

数据库也是一样的,如果表很小,数据库规划器甚至不会使用索引,而是选择对整个表进行全表扫描(或者在表聚簇索引的情况下进行全索引扫描)

每日清单

喜欢这里读到的内容吗?我每天早上给2000名软件开发者写一些新东西。

如果你喜欢我的文章,点赞,关注,转发!

在酒店房间中的数据库索引相关推荐

  1. Navicat工具中建立数据库索引

    一.实例 二.具体分析 1.Index Type Normal:  普通索引 Unique: 唯一的,不可重复的 Full Text: 全文搜索的,用于搜索很长的文章,效果最好 ​​​​​​​   1 ...

  2. mysql 节点查根_(三)B数、B+树及在数据库索引中应用

    在算法逻辑上,二叉树的查找效率和比较次数都是最小的,但是在实际问题中,还要考虑磁盘IO. 数据库索引是存储在磁盘上的,当数据量比较大时,索引可能几个G. 当我们利用索引查询的时候,不能将整个索引全部加 ...

  3. 数据库索引的作用和优点缺点以及索引的11中用法

    为什么要创建索引呢?这是因为,创建索引可以大大提高系统的性能.  第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性.  第二,可以大大加快 数据的检索速度,这也是创建索引的最主要的原因. ...

  4. 程序员的算法课(16)-B+树在数据库索引中的作用

    前文讲了二叉树和多路树,二叉树的性能很好,像AVL树.红黑树都是很优秀的结构,那么在数据库索引中,并没有采用二叉树这种结构,这是为什么呢?因为,有性能更好的树来做搜索!目前大部分数据库系统及文件系统都 ...

  5. 数据库索引统计信息不一致_列存储索引增强功能–克隆数据库中的索引统计信息更新

    数据库索引统计信息不一致 SQL Server was launched in 1993 on WinNT and it completed its 25-year anniversary recen ...

  6. 索引视图是否物理存储在数据库中以及使用索引视图的一些见解

    索引视图是否物理存储在数据库中以及使用索引视图的一些见解 前言 这个话题我本来是写在文章里没有写在随笔里的,不过赶脚不写在随笔里其他人就看不到了,因为小弟对视图的认识不深 希望写在随笔里让大家也讨论一 ...

  7. mysql 索引类型 bitmap_理解数据库中的常见索引类型

    在数据库中,索引能加快数据库的查询速度.下面就来理解一些常见的索引类型: B-Tree Bitmap Clustered Non-unique unique 索引有很多种类型,可以为不同的场景提供更好 ...

  8. 怎么运用索引查处mysql表中的数据_深入理解MySQL数据库索引原理及实现,快速检索数据库 MySQL数据库使用教程...

    免费学习推荐: 一.索引的概念 1.索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址 (类似于C语言的链表通过指针指向数据记录的内存地址) . 2.使用索引后可以不用 ...

  9. B树在数据库索引中的应用剖析

    引言 关于数据库索引,google一个oracle index,mysql index总 有大量的结果,其中很多的使用方法推荐,**索引之n条经典建议云云.笔者认为,较之借鉴,在搞清楚了自己的需求的基 ...

最新文章

  1. [codeforces]Round #538 (Div. 2) F. Please, another Queries on Array?
  2. 存储器结构层次(二)
  3. [译]ElasticSearch数据类型--string类型已死, 字符串数据永生
  4. 【SSM面向CRUD编程专栏 1】Spring简介 xml配置文件 依赖注入 数据注入
  5. Kinaba及X-Pack插件安装
  6. jvm面试 -- 谈谈ClassLoader ,ClassLoader的双亲委派机制 , loadClass和forName的区别
  7. 5G 时代的车联网混战!
  8. antd如何获取表单的值_JavaScript多个表单序列化获取值
  9. 未能创建可接受的游标。
  10. 易学性vs易用性,产品应该选哪边?
  11. 用python的turtle库画圣诞树
  12. ◎Vbs调用MsAgent组件,很有趣
  13. jxta java_JXTA-JavaP2P JXT
  14. 国内快递公司最新编码汇总_快递鸟
  15. 用java做一个简易的五子棋
  16. 微信公众号开发文档,微信小程序开发文档,微信扫码支付文档,微信委托代扣模式开发文档
  17. 中国互联网大人物直播简史
  18. 机器学习 - 训练集、验证集、测试集
  19. 计算机信息工程专业工资,2020年工科类专业薪资最新排名,计算机很吃香,工资水平最高...
  20. 熟知四种常见的BIOS信息说明【7gyy】

热门文章

  1. Qt开发:Qt Widgets模块——QCompleter类
  2. RTP/AVP RTP/AVP/TCP
  3. jmeter打开jtl文件时报错
  4. linux平台使用docker搭建redis-cluster集群,并用JedisCluster连接集群
  5. 验证码图片 java_Java实现图片验证码具体代码
  6. 想知道路的尽头是什么与站在路的尽头回望
  7. Could not execute auto check for display colors using command /usr/bin/xdpyinfo
  8. Python:星期一
  9. java开发程序员辛苦吗,震撼来袭免费下载!
  10. 使用代理IP发送请求,出现502错误 java.io.IOException: Unable to tunnel through proxy. Proxy returns “HTTP/1.1 502