次のクエリは機能しますが、特に高速ではありません。
select distinct controlid, (
select max(Orderno) From my_table
Where ControlID = #param1#
and a = 3 and b = 13 and c = 0 and d = 0
) colA, (
Select max(Orderno) From my_table
Where ControlID = #param1#
and a = 2
) colB, (
Select max(Orderno) From my_table
Where ControlID = #param1#
and a = 1 and b = 14 and e = 1
) colC, (
Select max(Orderno) From my_table
Where ControlID = #param1#
and a = 3 and b = 13 and e = 1 and c = 0 and d = 0
) colD, (
Select a From my_table
Where ControlID = #param1#
and Orderno = #param2#
) colE
from my_table
where controlid = #param1#
クエリ対象のテーブルには 300K を超える行があり、特定の controlid (distinct 句の前) の行数は 1 から 61 までさまざまです。プロファイラーによると、応答時間は 234/42 ミリ秒です。テーブルにインデックスはありません。
明らかに、インデックスの欠如は問題ですが、それ以上に、このクエリを作成するためのより効率的な方法を推奨できる人はいますか?