【发布时间】:2019-03-06 21:21:42
【问题描述】:
我有一个具有以下架构的表:
CREATE TABLE LoanEvents (
Id integer primary key not null,
LoanId integer not null default '0',
Period integer not null default '0',
... more data
)
它定义了一个索引:
CREATE UNIQUE INDEX LoanEvents_LoanId_Period
on LoanEvents(LoanId,Period)
我正在这个表上运行一个带有连接的复杂查询,我收到了以下消息:
SQLite warning (284): automatic index on LoanEvents(LoanId)
当已经有一个以 LoanId 作为第一个键的索引时,为什么我会收到此警告?
在不添加不必要的索引的情况下,我可以做些什么来消除警告?
【问题讨论】:
-
显示查询?另请阅读如何解释 EXPLAIN QUERY PLAN 输出。
-
另外,具有唯一索引的默认列值有点奇怪。如果您在填充表后尝试创建该索引,您确定它成功了吗?
-
@DourHighArch 并不是真正的重复,因为 OP 已经在相关列上建立了索引。
-
仅供参考,它不是重复的,因为我已经有一个合适的索引。是的,索引存在(我从实际数据库的模式中复制了 create 语句)。该查询非常复杂(涉及大约 8 个表)并且在此处发布是保密的。如果没人知道即兴的答案,我会尝试创建一个非机密版本并发布。