上から始めて、テーブルから選択されたポイントの数を減らして結合する必要がある一連のデータベース テーブルがあります。しかし、最後のステップで、大きなテーブルのポイント数を満たすために、最後のテーブルを拡張する必要があります。これが例です
アナライト
Analyte_Index、Analyte_Name ... 1、「dCMP」
検体フォルダ
Analyte_Index , Folder_Index ...
1 , 1
フォルダ
Folder_Index, Folder_Path ...
1 , 'c:\temp'
ファイル
File_Index, Folder_Index, File_Name ...
1 , 1 , 'test.dat'
ピーク
Peak_Index, File_Index, Folder_Index, Cluster_Index ...
1 , 1 , 1 , 1
2 , 1 , 1 , 1
3 , 1 , 1 , 2
4 , 1 , 1 , 3
5 , 1 , 1 , 3
6 , 1 , 1 , 4
クラスター
Cluster_Index ...
1
2
3
ピーク テーブルにはテーブルの大きなチャンクがあり、クラスターには多くのピークを含めることができます。したがって、他のすべてのテーブルは、ピーク テーブルから選択されるポイントの数を減らします。これは非常にうまく機能します。選択後、クラスターに結合を含めない場合、最大 9,000,000 ポイントになります。
これが私のクエリです
select peaks.Peak_Index, peaks.Cluster_Index, peaks.P_maxAmplitude, peaks.P_averageAmplitude, clusters.C_averageAmplitude
from peaks
join files
on files.File_Index = peaks.File_Index
join folders
on folders.Folder_Index = files.Folder_Index
join analytefolders
on analytefolders.Folder_Index = folders.Folder_Index
join analytes
on analytes.Analyte_Index = analytefolders.Analyte_Index
join clusters
on clusters.Cluster_Index=peaks.Peak_Index
where analytes.Analyte_Name='dCMP'
クラスターの結合により、返される行数は ~1,000,000 (クラスター数) に減少します。ピークの数に一致するようにクラスターからのデータを拡張するために必要なもの。考えられるすべての結合を試し、結合の順序を変更しましたが、これは私の限られた SQL スキルを超えています。