1

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

我正在尝试提高视图的性能,我尝试使用 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)

执行计划

4

1 回答 1

1

为了优化代码,您可以做一些事情:

  1. 您需要所有返回列吗?如果不需要,请仅选择您需要的列。
  2. 您是否需要转换进行连接的字段。看起来它们是相同的,因此您可以删除转换语句。
  3. 您需要所有记录吗?如果不需要,只需使用使用定义的函数而不是视图 - 它与您的视图相同,除了您可以将一些参数传递给它,这些参数将剪切返回的数据。
于 2012-09-06T09:41:43.453 回答