system.data.SQLite Querying - 对于大型数据集来说非常慢



我目前正在运行一个如下所示的查询:

    Select Name from Location Where Created > (long value of date)
    and 
    Created < (long value of date) and LocationContainer = 'a string'
日期

的长值表示自纪元以来的毫秒数,我们用它来存储日期。

我有一个建立在LocationContainer上的索引,按该顺序创建。

我有一个返回 130 万行的查询,但运行也需要大约 40 秒。是吗?这个查询不应该快得多,因为我正在查询的字段被索引了?我错过了什么?

您是否尝试过更改 where 表达式的顺序?我绝不是专家,但我相信 where 子句中的表达式需要按照在复合索引中定义的相同顺序指定列。因此,您的查询应变为以下内容:

SELECT Name FROM Location
WHERE LocationContainer = 'a string'
  AND Created > (long value of date)
  AND Created < (long value of date)

本质上,如果您有一个由 A、B、C 列组成的复合索引。其中 where 子句按该顺序指定列 A、B、C 或 A,B 将使用索引的查询。

最新更新