【发布时间】:2012-07-28 06:55:06
【问题描述】:
我的 MS Sql Server 数据库中有 4 个视图,它们都非常快(不到 2 秒)并且返回的行数都少于 50 行。
但是,当我创建一个加入这 4 个视图(左外连接)的查询时,我得到一个查询,需要将近一分钟才能完成。
我认为查询优化器在这里做得不好,有什么办法可以加快速度。我很想将 4 个视图中的每一个复制到一个表中并将它们连接在一起,但这对我来说似乎是一种太多的解决方法。
(旁注:我无法在任何表上设置任何索引,因为视图来自不同的数据库,并且我不允许在那里更改任何内容,所以这不是一个选项)
编辑:很抱歉,但我认为发布 sql 查询不会有帮助。它们非常复杂,使用大约 50 个不同的表。我也无法发布执行计划,因为我没有足够的访问权限在某些数据库上生成执行计划。
我想我现在最好的解决方案是生成临时表来存储每个查询的结果。
【问题讨论】:
-
如果不共享视图中的 SQL 或查询计划的结果,您不可能得到任何有意义的答案。
-
大多数 DBA 都愿意授予“标准”开发人员权限:
GRANT SHOWPLAN TO YourUser; GRANT ALTER TRACE TO YourUser; GRANT VIEW SERVER STATE TO YourUser;拥有这些权限将使您的工作更轻松。 -
@Andomar:谢谢,我会将这些信息转发给我的数据库管理员
标签: sql sql-server performance sql-server-2008