|
|
1
2
您列出的两个查询等效于:
几乎所有优化器都将以相同的方式执行它们。 你可以发布一个真正的执行计划,这里的人可能会给你一个加速的方法。如果指定正在使用的数据库服务器,则会有所帮助。 |
|
2
2
相关
子查询。它可能会导致MySQL为每个行执行子查询
非相关
|
|
|
3
0
YMMV,但我经常发现使用EXISTS而不是IN可以使查询运行得更快。
当然,如果看不到查询的其余部分和上下文,这可能不会使查询更快。 加入可能是一个更可取的选择,但如果a.id在b的id列中多次出现,则必须在其中加入一个DISTINCT,并且很可能会在优化方面倒退。 |
|
|
4
0
我永远不会使用这样的子查询。加入会快得多。
当然,也不要使用select*(尤其是在进行连接时不要使用它,因为至少有一个字段是重复的),这样会浪费网络资源来发送所需的数据。 |
|
5
0
你看过执行计划了吗? 怎么样
假设id字段是主键? |
|
|
6
0
我尝试了所有3个版本,它们的运行方式大致相同。执行计划是相同的(内部联接,IN(子查询中有和没有where子句),存在) 由于您没有从B中选择任何其他字段,因此我更喜欢使用Where IN(选择…)任何人都会查看查询并知道您试图执行的操作(仅在a if IN B中显示)。 |
|
7
0
您的问题最有可能出现在“a”中的七个表中 使FROM表包含“a.id” 进行下一个连接:a.id=b.id上的内部连接b
|
|
|
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 年前 |