1
select a,b,max(c) from myTable
where a>b
group by a,b

私の最初の本能は、[a、b、c]のクラスター化されたインデックスを開くことです。

そしてここに質問があります:

誰かが別の単純な選択を実行していると仮定します:

select a from myTable.

[a]列はインデックス全体で検索[a,b,c]されますか?または、インデックスをまったく使用しません...?(インデックス使用すると思います)[a,b,c]

しかし、私はそれが単一の[a]インデックスとして速くはないだろうと思います...

だから私は何をすべきですか?

[a,b,c]インデックス の作成または[a,b,c] + [a]インデックスの 作成

4

1 に答える 1

1

あなたの最初の考えは正しいです。クエリ:

SELECT a
FROM myTable

(a,b,c)インデックスを有効に活用できるようになります。(a)インデックスを追加する必要はありません。


このインデックスをクラスター化する必要があるかどうかについては、まったく別の議論です。SQL-Serverではテーブルごとに1つのクラスター化インデックスしか許可されないため、慎重に選択する必要があります。MSDNの記事「クラスター化インデックスの設計ガイドライン」および「クラスター化インデックスの作成」を参照してください。

于 2012-04-20T06:32:12.460 に答える