【发布时间】:2011-09-25 16:53:32
【问题描述】:
在我的表中,有些列没有索引,在这些列中搜索值可能需要很长时间,因为 SQLite 会进行全表扫描。
在我的具体情况下,我正在寻找的行(值是唯一的)几乎总是在最近插入的行中。
我怀疑 SQLite 在进行扫描时从最旧(第一)行开始,有没有办法指示 SQLite 以相反的顺序进行表扫描?
更新:我在更新日志中找到了这个:
如果这样做满足 ORDER BY ... DESC 子句,优化器现在将反向扫描表。
所以也许这意味着我可以添加一个 ORDER BY 子句来加快速度。
【问题讨论】:
-
按 DESC 排序不会导致 SQLite 在找到匹配项时停止扫描行。如果您的值在该列中是唯一的,它将继续扫描,在找到第一个匹配项后不会再找到其他匹配项。请参阅下面的 LIMIT 建议。
标签: sqlite optimization indexing full-table-scan