【发布时间】:2016-11-07 14:49:47
【问题描述】:
我有一个如下的 SQLite 表:
CREATE TABLE TableA (ColumnA INTEGER PRIMARY KEY AUTOINCREMENT,
ColumnB INTEGER NOT NULL,
ColumnC TEXT NOT NULL)
我在这个表上创建了两个索引,如下所示:
CREATE INDEX ColumnB_ColumnC_on_TableA ON TableA (ColumnB ASC, ColumnC ASC)
CREATE INDEX ColumnC_on_TableA ON TableA (ColumnC ASC)
当我对以下查询运行 EXPLAIN QUERY 命令时...
UPDATE TableA SET ColumnB = 1 WHERE ColumnC = '1'
...我看到输出如下...
SEARCH TABLE TableA USING COVERING INDEX ColumnC_on_TableA (ColumnC=?)
我不明白为什么查询计划说ColumnC_on_TableA 索引是一个覆盖索引,而该索引并未覆盖表中的所有列。任何人都可以理解并解释它吗?
【问题讨论】:
标签: sqlite android-sqlite