sqlite 查询未完成 - 索引错误或数据过多?

sqlite query does not complete - bad index, or just too much data?

我在 SQLITE 中有两个 table:from_originalfrom_binary。我想通过 LEFT OUTER JOIN 提取 from_original 中不存在于 from_binary 中的记录。问题是我写的查询没有完成(我在大约 1 小时后终止了它)。谁能帮我理解为什么?

我为查询中的每个字段定义了一个索引,但 explain query plan 只提到将引用其中一个索引。我不确定这是问题所在,还是只是数据太多的问题。

这是我正在尝试的查询 运行:

select * from from_original o
left outer join from_binary b
on o.id = b.id
and o.timestamp = b.timestamp
where b.id is null

table每个人都有大约 400 万条记录:

我在所有 idtimestamp 字段上定义了一个索引(请参阅 post 末尾的架构),但 explain query plan 仅指示其中一个将使用 id 索引。

这是 table 架构,包括索引定义:

这是您的查询:

select o.*
from from_original o left outer join
     from_binary b
     on o.id = b.id and o.timestamp = b.timestamp
where b.id is null;

(注意:您不需要 b 中的列,因为它们都应该是 NULL。)

此查询的最佳索引是 from_binary(id, timestamp) 上的复合索引。您 有很多 SQLite 数据,但这可能会在有限的时间内完成。