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

时间:2010-06-02 04:18:46

标签: database performance indexing

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

索引的工作原理如何?

5 个答案:

答案 0 :(得分:6)

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

  

简单地说,数据库索引有帮助   加快数据检索。另一个   索引的好处是你的   服务器不必像以前那样努力工作   获取数据。它们大致相同   作为书籍索引,提供   快速跳转点的数据库   在哪里可以找到完整的参考(或   找到数据库行。)

例如,有许多索引技术:

  • 主要索引,二级索引
  • B树和变种(B + - 树,B * - 树)
  • 哈希和变体(线性哈希,螺旋等)
例如,只是认为你有一个数据库,主键被排序(简单),这些所有数据都存储在块中(在hdd中),所以每次你想访问数据时你都不想增加访问时间(有时称为事务时间或i / o时间)索引通过使用这些主键帮助您将哪些数据存储在哪个块中。 爱丽丝(主键是名字,不是很好的例子,只是给出一个想法)

Alice
...
...
AZ...
Bob
Bri
...
Bza
...

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

我不详细说明,但如果您想深入研究这些主题,我会为您提供数据库课程或者阅读这本大多数大学教授的畅销书。

Database Management Systems Ramakrishn CGherke

alt text http://ecx.images-amazon.com/images/I/51QUe5OKQdL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_.jpg

答案 1 :(得分:3)

书中的索引如何增加找到正确页面的难易程度?

通过字母列表查看然后转到正确的页面比阅读每一页更容易。

答案 2 :(得分:3)

每个索引都保持索引字段分开存储,排序(通常)和数据结构,这使得查找正确的条目变得特别容易。数据库查找索引中的条目然后将它们交叉引用到表中的条目(除了聚簇索引和覆盖索引的情况,在这种情况下索引已经全部已经完成)。这种交叉引用需要时间,但比扫描整个表格更快(希望如此)。

聚簇索引是包含所有列*的行本身与索引一起存储的位置。扫描聚簇索引比扫描非聚簇非覆盖索引更好,因为需要的查找次数更少。

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

*通常排除blob /长文本列等

答案 3 :(得分:1)

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

答案 4 :(得分:1)

索引为查询查询提供了最佳数据结构。如果您的数据集发生了很大变化,您也可以考虑更新/重新生成索引的性能。 有许多开源索引引擎,如lucene,你可以在线搜索有关性能基准的详细信息。