即使键是显式索引中的第一个键,SQLite也会给出自动索引警告

时间:2018-10-01 18:14:38

标签: c# sqlite

我有一个具有以下架构的表:

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作为第一个键的索引时,为什么我会收到此警告?

有什么我可以做的摆脱警告的方法,而无需添加不必要的索引?

2 个答案:

答案 0 :(得分:1)

我找到了答案-我的查询在其JOIN中有错误-我不小心将tensor1D[]连接到字符串字段(其名称与我要连接的整数字段非常相似)。

据我所知,这意味着SQLite需要LoanId上的字符串索引,而不是它已经拥有的整数索引。

显示为可能重复的问题,SQLite Database gives warning automatic index on <table_name>(column) After upgrading Android L实际上在第二个答案中包含一个线索,它指出索引必须与需要它的列具有相同的排序规则。我想我们可以补充一点,它也应该具有相同的类型。

答案 1 :(得分:0)

我希望这会有所帮助:SQLite Gives Automatic Index Warning

免责声明:我还没有亲自测试过。