我已经在线阅读了一段时间,因为使用索引确实可以加快数据库查询速度。
我的问题是什么是索引?为什么他们加快查询速度?
答案 0 :(得分:5)
简单来说,它提供了一种有效查找数据的方法。
拿一本电话簿,它总是“姓氏,名字”,所以你可以查找某人。想象一下,如果电话公司只是在列表的末尾添加了新的数字而没有任何排序:你必须逐个扫描数百万个条目才能找到“史密斯,约翰”。
嗯,这同样适用于数据库表。没有索引的表(简称)称为“堆”:因为您的数据实际上是一堆无序数据。如果我有一百万行,我必须浏览每一行以找到我想要的内容。
当然,它更复杂但我希望这能抓住本质。
同样适用于任何地方:A-Z指南中的街道名称始终是按字母顺序排列的,银行对帐单上的条目始终按日期顺序
答案 1 :(得分:1)
索引是表的一部分(一部分)的副本,它在内存中比整个表更小,从而加快了读取操作。
答案 2 :(得分:1)
索引是一件复杂的事情,有些要点:
有不同类型的索引,并且非常特定于每个实现。基本上没有确切的科学来创建索引,它们对于应用程序至关重要。
IMO,初学者索引中最好的articles之一,实际上是一组文章。它需要一个帐户,但是免费且是一个很棒的SQL信息资源。
答案 3 :(得分:1)
您是否曾使用其索引搜索过书籍的内容?您通常会看到索引页面,看到您需要的章节出现在哪个页面上,然后直接跳到该页面,而不是搜索所有页面。
这与索引在表上的工作方式非常相似 - 取决于查询过滤哪些列,扫描该列上的索引,该索引给出了实际物理内存中相应行的位置。这比单独搜索所有行要快得多。此外,索引通常是有序的(而实际行可能不是),这允许应用更好的搜索算法,如二进制搜索扫描。