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

Sql 数据库上下文中的索引是什么?,sql,indexing,Sql,Indexing,我已经在网上读了一段时间了,现在使用索引确实可以加快数据库查询的速度 我的问题是什么是索引?为什么它们会加快查询速度?索引是表的一个副本(部分),保存在内存中的索引比整个表小,从而加快了读取操作。简单来说,它提供了一种高效查找数据的方法 拿一本电话簿来说,它总是“姓,名”,所以你可以查到某人。想象一下,如果电话公司只是在没有任何排序的情况下在列表的末尾添加新号码:你必须逐个扫描数百万条条目才能找到“Smith,John” 这同样适用于数据库表。没有索引的表(简单地说)称为“堆”:因为您的数据实际

我已经在网上读了一段时间了,现在使用索引确实可以加快数据库查询的速度


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

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

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

拿一本电话簿来说,它总是“姓,名”,所以你可以查到某人。想象一下,如果电话公司只是在没有任何排序的情况下在列表的末尾添加新号码:你必须逐个扫描数百万条条目才能找到“Smith,John”

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

当然,这更复杂,但我希望这抓住了本质


这同样适用于任何地方:A-Z指南中的街道名称始终按字母顺序排列,银行对账单上的条目始终按日期顺序排列,索引是一件复杂的事情,有些要点:

  • 索引,就像在书中一样,创建 指向数据的指针
  • 索引需要维护,随着时间的推移,它们变得支离破碎
  • 创建和更新的开销 作为索引的语句需要 数据更改时更新
  • 主要用于加速 数据检索
索引有不同的类型,并且对每个实现都非常具体。基本上,创建索引没有确切的科学依据,它们对应用程序至关重要


IMO,一个比较好的初学者索引,实际上是一套文章。它需要一个帐户,但是免费的SQL信息资源。

你有没有用索引搜索过一本书的内容?您通常会看到索引页,以查看您需要的章节出现在哪个页面上,然后直接跳到该页面,而不是搜索所有页面


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

-相当全面的信息我对索引或索引的看法是,它们用于轻松定位数据库中的数据,并允许对数据进行排序。这意味着,如果我向“Person”表中的“Name”列添加索引,这意味着该表中的记录将按“Name”列排序?如果同一个表中的两列都有索引,会发生什么情况?@Sergio Tapia:每个索引都按逻辑顺序排列,以允许找到值。这就是拥有多个索引的方式:每个索引在逻辑上是与实际数据分开排序的。这将忽略群集索引和非群集索引,它们是物理实现。为简单起见,考虑每个逻辑排序都足够了。例如,表格不是打印的电话簿,它是磁盘上的一种结构,不是真正的人类可读的。。。因此,我提到了“逻辑”部分