このクエリを最適化する方法についてのアイデアを探しています。実行計画を評価しましたが、欠落しているインデックスのアイデアは提供されていないため、クエリをより適切に (異なる戦術で) 作成すると、より高速で軽量なクエリが得られるかどうかに興味があります。
SELECT [Place], COUNT([Place])
FROM (
SELECT scoresid, REPLACE(REPLACE(EventPlace1,'T', ''),'*','') [Place]
FROM [MS.Prod]..mso_scores UNION
SELECT scoresid, REPLACE(REPLACE(EventPlace2,'T', ''),'*','')
FROM [MSO.Prod]..mso_scores UNION
SELECT scoresid, REPLACE(REPLACE(EventPlace3,'T', ''),'*','')
FROM [MSO.Prod]..mso_scores UNION
SELECT scoresid, REPLACE(REPLACE(EventPlace4,'T', ''),'*','')
FROM [MSO.Prod]..mso_scores UNION
SELECT scoresid, REPLACE(REPLACE(EventPlace5,'T', ''),'*','')
FROM [MSO.Prod]..mso_scores UNION
SELECT scoresid, REPLACE(REPLACE(EventPlace6,'T', ''),'*','')
FROM [MSO.Prod]..mso_scores UNION
SELECT scoresid, REPLACE(REPLACE(AAPlace,'T', ''),'*','')
FROM [MSO.Prod]..mso_scores
) data1
JOIN [MSO.Prod]..mso_scores scores ON scores.scoresid = data1.scoresid
AND scores.usagnum = '274246'
AND scores.TeamResult='N'
WHERE data1.Place IN ('1', '2', '3')
GROUP BY Place
簡単に説明すると、6 つのイベント場所フィールドがあります。これらのフィールドのデータは、「1」、「2」、「1T」、「3」、「5T」のようになります。「T」はネクタイです。1、2、3 という数字だけを気にするので、その場所から「T」または「*」を解析し、クエリをグループ化してカウントします。
1 位がいくつあるか、2 位がいくつあるかなど..