在我的表中,有一些列没有索引,在这些列中搜索值可能需要很长时间,因为 SQLite 会进行全表扫描。
在我的具体情况下,我正在查找的行(值是唯一的)几乎总是在最近插入的行中。
我怀疑 SQLite 在进行扫描时从最旧的(第一)行开始,有什么方法可以指示 SQLite 以相反的顺序进行表扫描?
更新:我在变更日志中发现了这一点:
如果这样做可以满足 ORDER BY ... DESC 子句,优化器现在将反向扫描表。
所以也许这意味着我可以添加一个 ORDER BY 子句来加快速度。
最佳答案
解决方案是:
ORDER BY rowid DESC LIMIT 1
它使查找速度快如闪电!
关于SQLite:优化表扫描,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7547022/