【发布时间】:2009-12-17 21:11:06
【问题描述】:
我有一个使用 11 个外连接和两个内连接来创建数据的视图。这导致超过 800 万行。当我在桌子上进行计数(*)时,大约需要 5 分钟才能运行。我不知道如何提高这张表的性能。有人对从哪里开始有任何建议吗?所有正在加入的列上似乎都有索引(虽然有些是复合的,但不确定这是否会有所不同......)
任何帮助表示赞赏。
【问题讨论】:
-
您查看过估计/实际执行计划吗?如果您在某处缺少索引,他们会告诉您
-
我看过了。没有占用大量时间的表扫描。有很多“哈希匹配”加起来性能很差,但是哈希匹配只有在索引使用正确的情况下才会执行?
-
我发现一个非常有用的技巧是将复杂查询分解为子查询,例如如果您有一个包含 11 个连接的查询 - 对于通常无法同时考虑超过 4 个连接的优化器来说,这是一项艰巨的工作。我会尝试使用 4 个连接保持外部查询将其他连接移动到子查询。在一些情况下帮助了我。
标签: sql-server join performance left-join