【问题标题】:What is an index in SQLite?SQLite 中的索引是什么?
【发布时间】:2010-07-21 07:57:07
【问题描述】:

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

【问题讨论】:

标签: sqlite indexing


【解决方案1】:

为什么不使用 SQL?答案是相同的,但内部细节会因实现而异。

在列上放置索引会告诉数据库引擎构建一个索引,当您在列中搜索某些值时,它可以快速定位行,而无需扫描表中的每一行。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      您可能在 Internet 上找不到有关此的信息,因为您假设它是一个 SQLite 概念,但事实并非如此——它是一个通用的计算机工程概念。

      【讨论】:

        【解决方案4】:

        想想通讯录。如果您正在搜索 Rossi Mario 的电话号码,您知道姓氏是按字母顺序排列的,因此您可以转到字母 R,然后搜索字母 o 等等。索引也是如此,它是对条目的引用的集合,可以加快一些操作。

        在无序的通讯录中搜索会慢很多,你应该从第一页的名字开始,在所有页面中搜索,直到找到你要找的名字。

        【讨论】:

          【解决方案5】:

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

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

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

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

          【讨论】:

            【解决方案6】:

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

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

            【讨论】:

              【解决方案7】:

              加快搜索和排序

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

              【讨论】:

                猜你喜欢
                • 2013-02-08
                • 2011-02-26
                • 2011-08-17
                • 1970-01-01
                • 1970-01-01
                • 2013-09-07
                • 2014-12-31
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多