2

年、州、郡ごとのデータを含むテーブルがあります。郡 ID は、州と郡の両方をコード化する FIPS コードとして格納されます。

年と郡で CLUSTERED INDEX を作成しました。データがその配置で物理的に保存されることを理解しています。

質問:

  • データはFIPSコードで保存されているので、自動的に状態順に並べられるのですか?

  • State に非クラスター化インデックスを追加しても、何も得られないように思えます。これは本当ですか?

  • より一般的に言えば、複数の変数にクラスター化インデックスがある場合、インデックスのコンポーネントに WHERE、GROUP BY、または ORDER BY 句を含むクエリは「カバー」されているため、インデックスは必要ありませんか?

4

1 に答える 1

0

クエリには、状態のインデックスがない場合に状態が正常であることを知る方法がありません。
状態に関するクエリでは、年とfipsの複合インデックスは使用されません。

州はインデックスの恩恵を受けます。
状態に個別のインデックスを付けることができます。
または、複合インデックスに州を含めます-年、州、FIPS。

複合インデックスcol1、col2、col3があるとします。そして、Whereはcol3にあります。クエリは複合インデックスを使用できますが、スキャンになります。col3を使用するクエリがたくさんあるか重要な場合は、col3にインデックスを付けて、メリットがあるかどうかを確認してください。そして、データをロードしてテストする必要があります。もう1つの要因は、複合インデックスが頻繁に使用される場合、それはすでにメモリ内にある可能性があることです。

于 2012-12-06T13:33:36.440 に答える