查看/查询性能

时间:2012-09-06 06:03:10

标签: sql sql-server-2008-r2

我在本地服务器上创建了一个视图,它从链接服务器获取数据。在链接上我只有读取权限。

我正在尝试提高视图的性能,我尝试使用SCHEMABINDING创建视图,但不允许在远程访问时使用SCHEMABINDING。我尝试阅读物化视图,是的我知道它是Oracle中的一个函数,但想知道SQL Server 2008 r2中是否存在类似内容。

有关如何提高查询性能的任何想法?

CREATE VIEW [dbo].[vw_CustomerServiceLevel]

AS
SELECT *
FROM [10.205.0.70].Freightware.dbo.CustomerServiceLevelReportEOF RF
INNER JOIN [10.205.0.70].Freightware.dbo.CustomerServiceLevelReportDetail RD 
  ON (RD.HeaderGUID=RF.HeaderGUID)
INNER JOIN [10.205.0.70].Freightware.dbo.CustomerServiceLevelReportHeader RH 
  ON (RH.HeaderGUID=RD.HeaderGUID)
LEFT JOIN SDBPHASE2DW.dbo.DimDate dd
  ON CONVERT(VARCHAR(10), RH.StartDate, 103) = CONVERT(VARCHAR(10), dd.FullDate, 103)
LEFT JOIN SDBPHASE2DW.dbo.DimDate dd2
  ON CONVERT(VARCHAR(10), RH.EndDate, 103) = CONVERT(VARCHAR(10), dd2.FullDate, 103)

Execution Plan

1 个答案:

答案 0 :(得分:1)

您可以采取一些措施来优化代码:

  1. 您是否需要所有返回列?如果不是,请仅选择您的列 需要。
  2. 您是否需要转换连接的字段。它似乎 它们是相同的,所以你可以删除转换语句。
  3. 您是否需要所有记录?如果没有,只需使用use defined函数 而不是视图 - 它将与您的视图相同,除非您是 能够传递一些会削减返回数据的参数。