我運行SQL Server 2005我有我的觀點放在一起的兩個表一個極端的新手。第一個表格只有2列進入視圖。一列是ID號,另一列是名稱。第二個表是所有數據的位置。該表中的列是ID,日期,小時,價格類型,市場類型和價格。我的目標是有過濾PriceType是一個固定值的視圖,然後採取價格的差異,當MarketType是DAM從與MarketType價格RTM。現在看起來像下面....優化SQL視圖/自查詢連接
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')
這種觀點並不這麼長時間自己拿。有時候,我希望把它的另一個步驟,並有2次在那裏我會運行聯接上述觀點,並採取價格where view1.CommonName=abc and view2.CommonName=xyz
的差異查詢之間的區別。當我運行該查詢時,它需要運行10次,因爲它本身運行簡單視圖。我假設如果我以最佳方式做事,它不會花費10倍的時間。我能做些什麼來改善這一點嗎?
您可以提供的任何額外信息將非常有用 - 表結構,數據量,示例數據,第二個查詢,您擁有的任何索引。最有可能的正確索引將加快速度。 – Laurence
是需求的嵌套視圖嗎? – Tahbaza