Database 数据库索引-它是如何工作的?

Database 数据库索引-它是如何工作的?,database,performance,indexing,Database,Performance,Indexing,索引如何提高数据检索的性能 索引是如何工作的?一本书中的索引如何增加找到正确页面的难度 浏览字母列表然后转到正确的页面要比阅读每页容易得多。这是一种严重的过度简化,但一般来说,数据库索引会创建表中某些内容的另一个列表,以数据库引擎可以快速查找信息的方式排列。通过有意地组织表内容,这消除了通过扫描整个表来查找一行数据的需要,从而提高了搜索的创建效率。数据库产品(RDM),如Oracle、MySQL构建了自己的索引系统,它们为数据库管理员提供了一些控制权,但是除了人们在该领域进行研究外,没有人确切知

索引如何提高数据检索的性能


索引是如何工作的?

一本书中的索引如何增加找到正确页面的难度


浏览字母列表然后转到正确的页面要比阅读每页容易得多。

这是一种严重的过度简化,但一般来说,数据库索引会创建表中某些内容的另一个列表,以数据库引擎可以快速查找信息的方式排列。通过有意地组织表内容,这消除了通过扫描整个表来查找一行数据的需要,从而提高了搜索的创建效率。

数据库产品(RDM),如Oracle、MySQL构建了自己的索引系统,它们为数据库管理员提供了一些控制权,但是除了人们在该领域进行研究外,没有人确切知道后台发生了什么,所以为什么要索引:

简单地说,数据库索引有帮助 加快数据检索速度。其他的 索引的最大好处是 服务器不必像以前那样努力工作 获取数据。他们几乎一样 作为书籍索引,提供 具有快速跳转点的数据库 在何处查找完整参考(或 以查找数据库行)

有许多索引技术,例如:

  • 主索引,辅助索引
  • B-树和变体(B+树,B*-树)
  • 散列和变体(线性散列、螺旋等)
例如,假设您有一个数据库,主键被排序(简单),所有数据都存储在块中(在hdd中),因此每次您想要访问数据时,您都不想增加访问时间(有时称为事务时间或i/o时间)通过使用这些主键,索引可以帮助您将哪些数据存储在哪个块中。 Alice(主键是名称,不是很好的示例,只是给出一个想法)

现在在这个索引中有了一个索引,您只存储Alice和Bob以及它们指向的块,这样用户可以更快地访问数据。RDMS处理细节

我不提供细节,但如果你想深入研究这些主题,我建议你学习一门数据库课程,或者看看这本大多数大学都教授的畅销书


每个索引将索引字段单独存储、排序(通常)并保存在一个数据结构中,这使得查找正确的条目特别容易。数据库在索引中查找条目,然后将它们交叉引用到表中的条目(聚集索引和覆盖索引除外,在这种情况下,索引已经包含了所有内容)。这种交叉引用需要时间,但比扫描整个表更快(希望如此)

聚集索引是将包含所有列*的行本身与索引一起存储的地方。扫描聚集索引优于扫描非聚集非覆盖索引,因为需要的查找更少

覆盖索引是指查询只需要作为索引一部分的列,因此不需要查找行的其余部分(这通常有利于性能)


*通常排除blob/长文本列等索引为查找查询提供了最佳的数据结构。如果您的数据集发生了很大变化,那么您也可以考虑更新/重新生成索引的性能。
有很多像lucene这样的开源索引引擎可用,您可以在线搜索有关性能基准的详细信息。

。一个索引重新生成的声音是什么?答案是有帮助的,而不是晦涩难懂的。删除可能是因为考虑了如何创建和使用图书索引。您应该检查此项
Alice
...
...
AZ...
Bob
Bri
...
Bza
...