我正在重复 Mongus Pong 提出的问题 为什么使用临时表比嵌套查询更快?没有适合我的答案。
我们中的大多数人在某些时候发现,当嵌套查询达到一定的复杂性时,它需要分解为临时表以保持其性能。荒谬的是,这可能是最实际的前进方式,这意味着这些过程不再能成为一种观点。而且通常第 3 方 BI 应用程序只能很好地与视图配合使用,因此这一点至关重要。
我确信必须有一个简单的查询计划设置,以使引擎轮流处理每个子查询,从内到外工作。没有第二次猜测它如何使子查询更具选择性(有时它做得非常成功)并且没有相关子查询的可能性。只是程序员打算由括号之间的自包含代码返回的数据堆栈。
我经常会发现,简单地从子查询更改为 #table 需要 120 秒到 5 秒的时间。本质上,优化器在某个地方犯了一个重大错误。当然,可能有一些非常耗时的方法可以让优化器以正确的顺序查看表格,但即使这样也不能保证。我在这里要求的不是理想的 2 秒执行时间,只是临时表在视图的灵活性范围内为我提供的速度。
我以前从来没有在这里发过帖子,但我已经写了很多年的 SQL 并且阅读了其他有经验的人的评论,他们也刚刚接受了这个问题,现在我希望合适的天才站出来说特别提示是 X...