次の列を含む巨大な (数百万行) テーブルがあります。
[When] datetime2(0),
[What] tinyint,
[Who] bigint
これは基本的に、さまざまなエンティティ (「誰」) に一度に (「いつ」) 発生したイベント (「何」) の表です。「What」には約 10 の異なる値があります。これは列挙型です。現時点で「Who」には約 10,000 の値があります。
このテーブルにクエリを実行して、特定の時間の間に 1 つ以上のエンティティに何かが発生したかどうかを確認できるようにしたいと考えています。たとえば、[When = '2012-10-01' から '2012-11-01'] の間に [Who = 0, 1, 2, 3] に [What = 0, 1, 2, 3] が発生しましたか。
このテーブルにインデックスを付ける最善の方法についてアドバイスを求めています。複合インデックスが最適だと確信していますが、正確な構成はわかりません。たとえば、列の順序はどうあるべきですか? 「最も選択的な」列は左側に移動する必要があると読みましたが、この場合は [いつ]、[誰が]、[何を] になると思いますか。これは正しいです?
この質問が漠然としているように思われる場合は申し訳ありませんが、ご意見をお寄せいただければ幸いです。SQL Server 2012 を使用しています。