2

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

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

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

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

我有一个返回 130 万行的查询,但它也需要大约 40 秒才能运行。那正确吗?由于我要查询的字段已编入索引,因此该查询不应该快得多吗?我错过了什么?

4

1 回答 1

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 的查询将使用索引。

于 2012-08-14T20:30:49.123 回答