【发布时间】:2012-01-28 07:52:55
【问题描述】:
我有一个 Windows 服务,它从视图中获取数据,并且为每个视图定义了一个用于填充数据的表。
视图的制作使得视图内部的视图可能更深三层。
您能给我一些提示如何提高最外层视图的性能吗?
或者如何提高整体性能。
谢谢。
编辑:我也听说过在视图中使用视图不是很好的策略,是真的吗?
【问题讨论】:
标签: sql sql-server sql-server-2008 optimization views
我有一个 Windows 服务,它从视图中获取数据,并且为每个视图定义了一个用于填充数据的表。
视图的制作使得视图内部的视图可能更深三层。
您能给我一些提示如何提高最外层视图的性能吗?
或者如何提高整体性能。
谢谢。
编辑:我也听说过在视图中使用视图不是很好的策略,是真的吗?
【问题讨论】:
标签: sql sql-server sql-server-2008 optimization views
我觉得这里解释的很好View Performance Question
SQL Server 在运行时解析总查询,因此查询计划 就像您编写连接并选择您想要的列一样。如果 视图仅包含适合您的查询的连接, 性能应该不会比编写 select 语句差。 如果视图具有不适合您的查询的连接 运行时,可能会导致性能问题。
另外,SQL Server 会花一些时间在“查看视图”上(例如从系统表中选择数据),因此视图的执行时间会比同一个查询的执行时间稍长一些,尽管它们的执行计划是相同的.
【讨论】:
基本上,删除视图。你通常不需要它们。
对于一般性能调整,这是一个不同且复杂的问题,它通常始于糟糕的设计、糟糕的代码和糟糕的实践。
** 索引或物化视图可以,但它们有使用限制
【讨论】:
整体性能不受视图结构的影响
除了
如果您在内部使用一些聚合处理(或任何不只是选择字段)或强制查询优化器NOT扩展视图。
views inside views 的策略怎么样 - 品味很重要,我认为它并不漂亮,但我不能将其命名为策略 8-)
关于提高整体性能的几句话 - 在一条消息中回答它是最复杂的领域,我认为你应该开始调整你的数据库以提高性能无需特别关注他人的观点或观点或其他任何东西即可获得收益。
【讨论】: