SQLite中的索引是什么?

时间:2010-07-21 07:57:07

标签: sqlite indexing

我不明白SQLite中的索引是什么或做什么。 (不是SQL)我认为它允许以升级和降序排序并更快地访问数据。但我只是在这里猜测。

7 个答案:

答案 0 :(得分:15)

为什么不用SQL?答案是一样的,但内部细节在实现之间会有所不同。

在列上放置索引会告诉数据库引擎构建一个索引,这个索引允许它在搜索列中的某些值时快速定位行,而不必扫描表中的每一行。

可以使用普通的二叉搜索树构建一个简单的(可能是次优的)索引。

答案 1 :(得分:5)

是的,索引都是关于提高数据访问性能(但以存储为代价) http://en.wikipedia.org/wiki/Index_(database)

答案 2 :(得分:3)

索引(在任何数据库中)是某种类型的列表,它将已排序(或至少可快速搜索)的密钥列表与有关在何处查找与密钥关联的其余数据的信息相关联。

您可能无法在互联网上找到有关此内容的信息,因为您认为这是一个SQLite概念,但事实并非如此 - 它是一般的计算机工程概念。

答案 3 :(得分:3)

想一下地址簿。如果您正在搜索Rossi Mario的电话号码,您知道姓氏按字母顺序排序,因此您可以转到R字母,然后搜索字母o,依此类推。索引也是如此,是对条目的引用集合,可以加速一些操作。

在无序的地址簿中搜索会慢得多,您应该从第一页上的第一个名称开始,然后在所有页面中搜索,直到找到您要查找的名称。

答案 4 :(得分:2)

  

我认为它允许排序   升级和降序   更快地访问数据。

是的,这就是它的用途。索引创建了对已排序数据的抽象,从而显着加快了搜索速度。使用平衡二叉搜索树的索引,搜索采用O(log N)而不是O(N)时间。

其他答案没有提到大多数数据库使用索引来实现UNIQUE(因此也是PRIMARY KEY)约束。因为为了确保唯一性,您必须能够检测密钥是否已经存在,这意味着您需要快速搜索它。

查看您的SQLite数据库。创建了这些sqlite_autoindex_索引以强制执行UNIQUE约束。

答案 5 :(得分:1)

与任何SQL(YES SQL)RDBMS中的索引相同。

您可以看到SQLite查询优化器会考虑索引:http://www.sqlite.org/optoverview.html

答案 6 :(得分:0)

加快搜索和排序速度

不同类型的SQLite索引以不同的方式加快了搜索和排序的速度。 以下tutorial很好地说明了这一点。