我有一个具有以下架构的表:
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 作为第一个键时,为什么我会收到此警告?
我可以做些什么来摆脱警告,而无需添加不必要的索引?
我找到了答案 - 我的查询在其 JOIN 中出错 - 我不小心将LoanId
连接到一个字符串字段(名称与我要连接的整数字段非常相似(。
据我所知,这意味着SQLite需要在LoanId上有一个字符串索引,而不是它已经拥有的整数索引。
显示为可能重复的问题,SQLite 数据库在
我希望这有所帮助: SQLite 给出自动索引警告
免责声明:我还没有亲自测试过。