私はこれについての初心者ですので、あなたが助けてくれることを願っています。私は SQL サーバー 2008R2 で作業しており、すべて結合された 4 つのテーブルから構成されるビューがあります。
SELECT DISTINCT ad.award_id,
bl.funding_id,
bl.budget_line,
dd4.monthnumberofyear AS month,
dd4.yearcalendar AS year,
CASE
WHEN frb.full_value IS NULL THEN '0'
ELSE frb.full_value
END AS Expenditure_value,
bl.budget_id,
frb.accode,
'Actual' AS Type
FROM dw.dbo.dimdate5 AS dd4
LEFT OUTER JOIN dbo.award_data AS ad
ON dd4.fulldate BETWEEN ad.usethisstartdate AND
ad.usethisenddate
LEFT OUTER JOIN dbo.budget_line AS bl
ON bl.award_id = ad.award_id
LEFT OUTER JOIN dw.dbo.fctresearchbalances AS frb
ON frb.el3 = bl.award_id
AND frb.element4groupidnew = bl.budget_line
AND dd4.yearfiscal = frb.yr
AND dd4.monthnumberfiscal = frb.period
ビューには 9 列と 150 万行があり、増え続けています。このビューから * を選択すると、すべての行で 20 分かかりました。結合されているテーブルのフィールドにインデックスを追加し、10 分に改善しました。私の質問は、選択をより速く実行するために他に何ができるでしょうか?
どうもありがとう、ヴァイオレット。