首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在酒店房间中的数据库索引

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

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

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

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

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

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

基本原理

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

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

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

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

每日清单

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230523A09WJW00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券