我从大约18个月前开始在技术领域工作以来就听说过它们。我知道它们有可能提高性能,并且它们似乎是列特定的--(“我们在 date_of_birth 列上索引 User 表”)。
只想快速了解它们究竟是什么,用于什么,以及它们如何工作。
只想快速了解它们究竟是什么,用于什么,以及它们如何工作。
我已经写了一本完整的书籍!它也可以在网上免费获取:http://use-the-index-luke.com/
我试着简短地回答你的问题——这并不是我的强项。上次我尝试回答,结果写了一本书……
像表格一样,索引由行和列组成,但是以逻辑排序的方式存储数据,以提高搜索性能。可以把它想象成电话簿(印刷版)。它们通常按照last_name
、first_name
和其他可能的标准(例如邮政编码)进行排序。这种排序使得快速查找特定姓氏的所有条目成为可能。如果你也知道名字,甚至可以很快地找到姓和名的组合的条目。
然而,如果你只知道名字,电话簿就不会真正帮助你。多列数据库索引也是如此。因此,是的,索引可以潜在地提高搜索性能。如果你对于你的问题使用了错误的索引(例如在搜索名字时使用电话簿),那么它们可能是无用的。
你可以在同一张表上的不同列上创建多个索引。因此,对last_name
,first_name
创建的索引与仅对first_name
创建的索引是不同的(这将优化按名字搜索的操作)。order by
)并将相关数据物理上紧密排列在一起(聚簇)。