我目前正在运行一个如下所示的查询:
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 将使用索引的查询。