0

たとえば、列を持つテーブルがあります: ColumnA、ColumnB、ColumnC、ColumnD

また、where 句がオンになっている select がいくつかあります。

ColumnA, ColumnB, ColumnC
ColumnA, ColumnC, ColumnD
ColumnA, ColumnB, ColumnD

目標は、これらのクエリを高速化することです。しかし、すべての列の組み合わせに対して複数列のインデックスを作成したくありません。多くの場所が必要になり、システムの速度が低下する可能性があるためです。

ColumnA だけにインデックスを作成する意味はありますか? クエリのパフォーマンスは向上しますか?

ありがとう

4

1 に答える 1

0

インデックスは、「テーブル スキャン」を減らす方法として使用されます。最も頻繁に使用される列または列の組み合わせにインデックスを付ける必要があります。それが2列を使用することを意味する場合、それは問題ありません。

また、CLUSTERED インデックスは、データの物理的なページ順であることも覚えておいてください。NON-CLUSTERED はそうではありません。したがって、クラスター化されたインデックスははるかに効率的になります。最もよく使用されるフィールドを常にクラスター化インデックスにし、あまり使用されないフィールドに非クラスター化インデックスを配置することができます。

最終的にはデータがすべてです。以前は 10 億レコードを超えるヘルスケア テーブルを扱っていましたが、そのような環境ではインデックス作成が非常に重要です。

于 2013-06-20T17:19:12.823 に答える