什么是数据库索引?

23 浏览
0 Comments

什么是数据库索引?

这个问题已经在这里有答案:

数据库索引是如何工作的?[关闭]

我从18个月前开始在技术领域工作时就听说过它们。我知道它们可能可以提高性能,它们似乎是基于列的 -- (“我们在 date_of_birth 列上对用户表建立索引”)。

只是想快速了解它们到底是什么,用于什么,以及它们如何工作。

admin 更改状态以发布 2023年5月20日
0
0 Comments

可以将它视为表格目录的表格。如果有,数据库知道更具体的查找位置。如果没有,数据库必须搜索所有数据才能找到它。

更详细的说明可以在这篇维基百科文章中找到

0
0 Comments

我写了一本完整的书来介绍数据库索引。这本书也可以在网上免费下载:http://use-the-index-luke.com/

我会尝试简短地回答你的问题,但这不是我的擅长点。上一次我尝试简短回答问题,最后却写出了一本书……

像表格一样,索引由行和列组成,但是以逻辑排序的方式存储数据以提高搜索性能。可以将其视为电话簿(纸质的)。它们通常按last_namefirst_name以及其他可能的标准(例如邮编)进行排序。这种排序使得可以快速查找特定姓氏的所有条目。如果还知道名字,甚至可以很快地找到姓、名组合的条目。

然而,如果您只知道名字,电话簿并不会帮助您。多列数据库索引也是如此。因此,索引可能提高搜索性能。如果您对于问题使用错误的索引(例如搜索名字时使用电话簿索引),它们可能是无用的。

您可以在同一张表格上的不同列上生成许多不同的索引。因此,last_namefirst_name索引与仅限于first_name的索引是不同的(您需要通过它来优化名字搜索)。

索引存储的数据是冗余的(例如聚簇索引 = 电话簿)。它们拥有与表中存储的相同信息(例如基于函数的索引),但是以排序的方式存储。此冗余由数据库自动维护,对于执行每个写操作(例如insert/update/delete)都会自动维护。因此,索引会减少写入性能。

除了快速查找数据外,索引还可以用于优化order by(例如排序操作)和物理上将相关数据紧密排列在一起(例如聚簇)。

若要更好地了解,请查看我的书的完整目录:http://use-the-index-luke.com/sql/table-of-contents

0