SQLite查询 - 对于大型数据集来说非常慢

时间:2012-08-14 20:19:20

标签: sqlite system.data.sqlite

我目前正在运行一个看起来如此的查询:

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

日期的长值意味着自Epoch以来的毫秒数,我们使用它来存储日期。

我有一个基于LocationContainer构建的索引,按顺序创建。

我有一个返回130万行的查询,但运行大约需要40秒。是对的吗?这个查询不应该快得多吗?我查询的sinc ethe字段是否被编入索引?我错过了什么?

1 个答案:

答案 0 :(得分:0)

您是否尝试更改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的查询将使用索引。