【问题标题】:Indexing SQLite database: Empty Index ?索引 SQLite 数据库:空索引?
【发布时间】:2011-11-15 20:22:33
【问题描述】:

我有一个 .sqlite 数据库,它只包含一个表。该表包含三列,我只对索引一列感兴趣。

问题是,当我执行索引时,我得到了一个空索引表

我正在为 Firefox 使用 SQLite Manager 附加组件。这是在我确认索引之前出现的语法:

CREATE  INDEX "main"."tableIndex" ON "table" ("column1" ASC)

我不知道这里有什么问题。我很久以前就用另一个数据库尝试过这个工具,它工作正常。

有什么建议吗?

【问题讨论】:

    标签: sqlite indexing sqlitemanager


    【解决方案1】:

    您无法“看到”数据库索引的内容。不会创建与索引对应的表或类似表的结构。所以没有什么可以看的,可能是空的。

    如果 CREATE INDEX 命令运行没有错误,您可以确信索引已创建,并且在您添加、删除和更新数据时将继续由 SQLite 维护。

    根据下面的 cmets,@iturki 实际上正在尝试为全文搜索建立索引。 SQLite 支持多个全文搜索扩展,但它们不是通过标准 CREATE INDEX 命令实现的。见this reference

    【讨论】:

    • 让我困惑的是索引前后文件的大小。这是相同的!完全没有变化。
    • 创建索引时table中有数据吗?而且,在检查数据库大小之前,您是否确保 commit CREATE INDEX 语句?
    • 是的,有 300 多条记录。是的,我提交了声明。
    • 嗯。您究竟在索引哪一列?它是否已经被索引为主键或外键?发出命令后,如果您对该表执行.schema,是否列出了索引?
    • 只有 300 条记录,您可能在文件中最后分配的页面上有空间用于索引。
    【解决方案2】:

    尝试使用 VACUUM 查询。它将完全重建 sqlite 数据库文件,并将重建所有索引并重置所有 ROWID 等。

    【讨论】:

    • 好。你能解释一下如何使用它吗?
    • 这很容易。只需在选项卡中输入:VACUUM;(或者是否在该 Firefox 插件中执行 SQL 查询)并运行它(在打开索引为空的数据库文件时执行此操作)
    猜你喜欢
    • 1970-01-01
    • 2018-11-11
    • 1970-01-01
    • 2012-06-19
    • 2012-08-28
    • 2019-04-14
    • 2016-09-17
    • 2014-10-22
    • 2011-02-19
    相关资源
    最近更新 更多