数据库上下文中的索引是什么?

时间:2010-10-31 16:57:22

标签: sql indexing

我已经在线阅读了一段时间,因为使用索引确实可以加快数据库查询速度。

我的问题是什么是索引?为什么他们加快查询速度?

4 个答案:

答案 0 :(得分:5)

简单来说,它提供了一种有效查找数据的方法。

拿一本电话簿,它总是“姓氏,名字”,所以你可以查找某人。想象一下,如果电话公司只是在列表的末尾添加了新的数字而没有任何排序:你必须逐个扫描数百万个条目才能找到“史密斯,约翰”。

嗯,这同样适用于数据库表。没有索引的表(简称)称为“堆”:因为您的数据实际上是一堆无序数据。如果我有一百万行,我必须浏览每一行以找到我想要的内容。

当然,它更复杂但我希望这能抓住本质。

同样适用于任何地方:A-Z指南中的街道名称始终是按字母顺序排列的,银行对帐单上的条目始终按日期顺序

答案 1 :(得分:1)

索引是表的一部分(一部分)的副本,它在内存中比整个表更小,从而加快了读取操作。

答案 2 :(得分:1)

索引是一件复杂的事情,有些要点:

  • 索引,就像在书中一样,创造 指向数据的指针。
  • 索引需要维护,随着时间的推移会变得支离破碎。
  • 对CREATE和UPDATE的开销 语句作为索引需要 数据更改时更新
  • 主要用于加速 检索数据

有不同类型的索引,并且非常特定于每个实现。基本上没有确切的科学来创建索引,它们对于应用程序至关重要。

IMO,初学者索引中最好的articles之一,实际上是一组文章。它需要一个帐户,但是免费且是一个很棒的SQL信息资源。

答案 3 :(得分:1)

您是否曾使用其索引搜索过书籍的内容?您通常会看到索引页面,看到您需要的章节出现在哪个页面上,然后直接跳到该页面,而不是搜索所有页面。

这与索引在表上的工作方式非常相似 - 取决于查询过滤哪些列,扫描该列上的索引,该索引给出了实际物理内存中相应行的位置。这比单独搜索所有行要快得多。此外,索引通常是有序的(而实际行可能不是),这允许应用更好的搜索算法,如二进制搜索扫描。

相关问题