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

在不添加不必要的索引的情况下,我能做些什么来消除警告?

标签: c#sqlite

解决方案


我找到了答案——我的查询在它的 JOIN 中有一个错误——我不小心加入了LoanId一个字符串字段(与我打算加入的整数字段的名称非常相似)。

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

显示为可能重复的问题,SQLite 数据库在 <table_name>(column) 上给出警告自动索引升级后 Android L实际上在第二个答案中包含一个线索,它指出索引必须具有与该列相同的排序规则需要它。我想我们可以添加它也应该具有相同的类型。


推荐阅读