|
|
1
16
选项4关闭。 SQL是 declarative :您告诉查询优化程序您想要什么,它会找到最好的方法(取决于时间/成本等)。对于外观相同的查询和表,这可能会有所不同,具体取决于统计信息、数据分布、行数、并行性以及上帝知道的其他内容。 这意味着没有固定的顺序。但这并不完全是“在飞” 即使使用相同的服务器、模式、查询和数据,我也看到执行计划不同 |
|
|
2
25
我认为答案4是正确的。有几个注意事项: 子查询的类型-是否相关。考虑:
在这里,子查询与外部查询不相关。如果t2.id中的值与t1.id相比数量较少,那么首先执行子查询,并将结果保存在内存中,然后扫描t1或t1.id上的索引(与缓存值匹配)可能是最有效的方法。 但如果查询是:
在这里,子查询是相关的——除非T1.type是已知的,否则无法计算子查询。由于T1.TYPE的值可能因外部查询的每一行而异,因此可以对外部查询的每一行执行一次此子查询。 然后,RDBMS可能真的很聪明,并且意识到t2.type只有几个可能的值。在这种情况下,如果可以猜测执行一次子查询的成本将比为每行执行一次子查询的成本更低,那么它仍然可以使用用于不相关子查询的方法。 |
|
|
3
1
SQL引擎试图优化(子)查询的执行顺序。决定这一点的部分称为查询优化器。查询优化器知道每个表中有多少行,哪些表有索引,哪些字段。它使用这些信息来决定先执行哪个部分。 |
|
|
4
1
如果您想了解有关这些主题的内容,请获取InsideSQLServer2008:T-SQL查询的副本。它有两章专门介绍如何在SQL Server中逻辑和物理地处理查询。 |
|
|
5
0
这通常取决于你的数据库管理系统,但是…我认为第二个答案更合理。 没有子查询结果通常无法计算主查询。 |
|
|
Johnny T · 基于当前值的SQL合并表[重复] 1 年前 |
|
John D · 需要为NULL或NOT NULL的WHERE子句 1 年前 |
|
ojek · 如何对SQL结果进行分组和编号? 1 年前 |
|
|
senek · 如何在PL/SQL中将选择结果(列)放入数组中 1 年前 |
|
|
Sax · 规范化Google表格(第一步) 1 年前 |
|
|
Jatin · 检索卷计数的动态sql抛出错误语法错误[关闭] 1 年前 |
|
|
Andrus · 如何在sql中查找第二个匹配项 1 年前 |