2

現在、次のようなクエリを実行しています。

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

エポックからのミリ秒を意味する date の long 値で、日付の保存に使用します。

私は、上に構築されたインデックスを持っています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 に答える