我运行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