![]() |
1
3
像这样的简单查询的连接顺序应该不重要。如果有一种方法可以重新排序联接以提高性能,那么这就是查询优化器的工作。 理论上,您不应该担心它——这就是SQL的要点。试图超越自己的想法,查询优化器通常不会给出更好的结果。特别是在MS SQL Server中,它有一个非常好的查询优化器。 我不希望这个查询需要40秒。您可能没有定义正确的索引。你应该使用像 SQL Server Profiler 或 SQL Server Database Engine Tuning Advisor 看看它是否可以推荐任何新的索引。 |
![]() |
2
2
查询优化器将使用在表上收集的约束、索引和统计信息的组合来构建执行计划。在大多数情况下,这很有效。但是,我偶尔会遇到执行计划选择不当的场景。通常,调整查询可以有效地迫使优化器选择更好的计划。不过,我不能提供做这件事的一般规则。当所有其他的失败时,你可以求助于
是的,连接顺序会对查询的执行时间产生重大影响。其思想是,通过连接首先产生最小结果的表,将使下一个连接的计算速度更快。
编辑:
然而,重要的是要注意,在
|
![]() |
3
1
通常,SQL Server足够聪明,可以选择最佳的联接方式,它不仅使用您在查询中编写的顺序。也就是说,如果所有的内部联接都是先连接,然后是左连接,那么我发现更容易理解复杂的查询。 |
![]() |
M S · 显示加入两个表的所有可用视频 2 年前 |
![]() |
neeh · 为每个父记录选择具有条件的子记录数[重复] 3 年前 |
![]() |
J. Krajewski · 如何计算具有给定成员的组的行数? 3 年前 |
![]() |
VickyBoy · 我试图用3个以上的表构建一个查询,其中数据分散在 3 年前 |
![]() |
newGuy101 · 如何将SQL子查询转换为Join子句? 3 年前 |
![]() |
user18797786 · Fuzzy Wuzzy和另一列的条件 3 年前 |
![]() |
Python learner Shaavin · 在解码过程中保留空间 3 年前 |
![]() |
Marvin · 在MySQL视图中左键连接 3 年前 |