![]() |
1
54
就性能而言,它们是相同的(并且产生相同的计划)
从逻辑上讲,如果替换
在你的情况下,这将是这样的:
或者:
前一个查询不会返回
|
![]() |
2
18
对于内部连接,你的标准放在哪里并不重要。SQL编译器将两者转换为一个执行计划,在该计划中,筛选发生在联接的下面(即,似乎出现的筛选表达式处于联接条件中)。 外部连接是另一回事,因为过滤器的位置改变了查询的语义。 |
![]() |
3
7
就这两种方法而言。
虽然你可以用不同的方法,但对我来说,这总是一种味道。 当出现问题时处理性能问题。然后你就可以研究这种“优化”。 |
![]() |
4
2
对于任何查询优化器来说…它们是一样的。 |
![]() |
5
0
这种连接的位置不太可能成为性能的决定因素。我不太熟悉tsql的执行计划,但很可能它们会自动优化为类似的计划。 |
![]() |
6
0
规则0:运行一些基准测试并查看!唯一能判断哪个更快的方法就是试试。这些类型的基准测试非常容易使用sql profiler执行。 另外,检查用join和where子句编写的查询的执行计划,看看有哪些不同。 最后,正如其他人所说,这两个应该由任何一个像样的优化器来对待,包括内置在sql server中的优化器。 |
![]() |
7
0
快一点吗?试试看。 哪个更容易阅读?在我看来,第一个看起来更“正确”,因为移动的条件实际上与连接无关。 |
![]() |
8
0
我猜是第一个,因为它对数据进行了更具体的过滤。但是你 should see the execution plan ,与任何优化一样,因为它可以在数据大小、服务器硬件等方面有很大的不同。 |
![]() |
9
0
在PostgreSQL中它们是相同的。我们知道是因为如果你知道
它们都有相同的最小和最大成本以及相同的查询计划。另外,请注意,即使在最上面的查询中,team_score_2也会作为“过滤器”应用。 |
![]() |
Community wiki · SQL语法新手 1 年前 |
|
KateMak · 是否将多行中的多列与唯一id组合? 1 年前 |
![]() |
Karuna · SQL中列内的筛选器[重复] 1 年前 |
![]() |
Irvan Affandy · 为另一个选择选择声明的键 1 年前 |
![]() |
Community wiki · 这个MySQL语句出了什么问题? 1 年前 |
![]() |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |