約 5 つのインデックス列を持つデータベースがあり、そのすべてがさまざまな方法で役立ちます。それらをシステム、ソース、ヒート、タイム、ロウと呼びましょう。System と Row を一緒に使用すると一意のキーが作成され、System-Row で並べ替えると、データベースも 5 つのインデックス変数の任意の組み合わせで並べ替えられます (上記の順序で)。
私の問題は、これらの列のすべての組み合わせを使用することです。各 System-Row を次の System-(Row+1) に JOIN したい場合もあれば、System-Source-Heat で GROUP または WHERE を使用したい場合もあります。 System-Source WHERE Time is in a specific window などのすべてのエントリを調べます。
基本的に、これら 5 つのインデックスのすべての可能な順列 (もちろん正しい順序で) と同様に機能するインデックス構造が必要です。私は従来のデータベース作業ではなく、統計/分析を行っているため、インデックスのサイズと作成/更新の速度は問題ではありません。私は即席のクエリを高速化することだけを考えて実行し、5 ~ 10 分待ってから二度と使用しない傾向があるためです。したがって、私の主な関心事は、「5 ~ 10 分待つ」を「1 ~ 2 分待つ」ように減らすことです。
私のソートされたデータは次のようになります。
Sys So H Ti R
1 1 0 .1 1
1 1 1 .2 2
1 1 1 .3 3
1 1 2 .3 4
1 2 0 .5 5
1 2 0 .6 6
1 2 1 .8 7
1 2 2 .8 8
編集:他の4つの列のいずれかをソート順に作成するには、システムを事実上常に最初の列として含める必要があることを少し単純化する場合があります。