首页 文章

查看/查询性能

提问于
浏览
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)

Execution Plan

1 回答

  • 1

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

    • 是否需要所有返回列?如果不需要,请仅选择所需的列 .

    • 是否需要转换连接的字段 . 它们似乎是相同的,因此您可以删除转换语句 .

    • 您是否需要所有记录?如果没有,只需使用一个使用定义的函数而不是视图 - 它将与您的视图相同,除非您能够传递一些将切断返回数据的参数 .

相关问题