私は SQL SERVER 2005 を実行する超初心者です。2 つのテーブルをビューにまとめています。最初のテーブルには、ビューに入る列が 2 つだけあります。1 つの列は ID 番号で、もう 1 つの列は名前です。2 番目のテーブルは、すべてのデータがある場所です。そのテーブルの列は、ID、Date、Hour、PriceType、MarketType、および Price です。私の目標は、PriceType をフィルター処理して固定値にし、MarketType が DAM の場合の Price と MarketType が RTM の場合の価格の差を取るビューを作成することです。今のところ、次のように見えます....
SELECT dbo.nodes.commonname,
dbo.nodes.node_id,
da.pricedate,
da.hour,
rt.price AS rtm,
da.price AS dam,
da.price - rt.price AS dart
FROM dbo.pnodes
INNER JOIN dbo.pnode_prices AS da
ON dbo.pnodes.node_id = da.pnode_id
INNER JOIN dbo.pnode_prices AS rt
ON dbo.pnodes.node_id = rt.pnode_id
AND da.pricetype = rt.pricetype
AND da.pricedate = rt.pricedate
AND da.hour = rt.hour
WHERE ( da.pricetype = 'LMP' )
AND ( da.markettype = 'DAM' )
AND ( rt.markettype = 'RTM' )
このビュー自体は、それほど時間はかかりません。場合によっては、別の一歩を踏み出し、上記のビューを結合して Price の差を取るクエリを実行する 2 つのビューの違いを知りたい場合がありますwhere view1.CommonName=abc and view2.CommonName=xyz
。そのクエリを実行すると、単純なビューを単独で実行する場合の 10 倍の時間がかかります。最適にやれば10倍の時間はかからないと思います。これを改善するために簡単にできることはありますか?