当前位置: 首页 > 面试题库 >

首先在mysql中发生了什么:join或where

汝楷
2023-03-14
问题内容

假设我有两个表A和B以及以下查询:

select *
from A
inner join B on A.id = B.id
Where A.id = 5

mysql是先执行联接还是在哪里执行?

编辑:

例如,如果A包含1000行,那么在where条件之后它将仅包含1行。在1行表上执行联接的效率要高得多,因此似乎首先执行where,然后再执行联接才更有效率。


问题答案:

join之前发生where然而,…

where子句是联接所返回的所有行的过滤器,但是优化器会认识到,如果存在索引A.id,它将用于从A该匹配中检索行,则将发生联接,然后从理论上说where子句将过滤结果,但优化器将再次认识到该条件已经满足,因此将其跳过作为过滤器。

综上所述,优化器将始终返回与没有优化器时返回的结果相同的结果。



 类似资料:
  • 问题内容: 它是在beta中,但不是在发布中? 问题答案: 对于后备甚至更好的是:

  • 问题内容: 早期的javadoc 这样表示有一个接口,它似乎有一个同样的关系作为必须的。 现在看来,我们固守在,这肯定是不一样的。 发生了什么事? 问题答案: 它已被删除前一段时间。布赖恩·格茨(Brian Goetz)提出了撤职的理由: 当前,唯一的实现者是Collection,所有其他支持流的方法都使用一种比“ stream”更合适的方法名称来提供特殊的流(chars(),codePoints

  • 观察:我在Polymer中运行一个SPA,当我在chrome中的新后台选项卡中打开内部链接时,页面直到我关注该选项卡才完成加载(ajax和所有页面)。 问题:chrome在等待用户焦点做什么?或者,Polymer在完成页面渲染和发送ajax请求之前在等待什么? 奖励:我如何打开一个开发工具面板,目标是我在后台打开的标签,以观察发生了什么/没有发生什么? 额外的回答:如果你在一个选项卡上打开开发工具

  • 问题内容: 你们中的许多人都已经看到了流行的AJAX框架(Dojo,jQuery,YUI)的Google趋势图。 该图似乎清楚地表明,对Dojo的兴趣在2008年第二季度下降了,下降了80%。jQuery弥补了这一懈怠,最终增长到Dojo的三倍以上。 为什么?在2008年第二季度发生了什么,这消除了对Dojo的兴趣? (请注意,我对Dojo与jQuery?”)的比较并不十分感兴趣;即使您可以解释为

  • 问题内容: 我一直在我的项目中使用它,而在JDK 6u17中我对此没有任何问题。现在,我刚刚更新为6u18,我发现它已被替换为。但是,如果导入此类并尝试编译我的类,则会收到错误消息: 我可以通过NetBeans代码完成功能访问此程序包,而NetBeans不会突出显示错误代码。 任何帮助,将不胜感激! 问题答案: 我不认为该类可以替代,该类已经存在很长时间了,根本 就不适合您使用 (因此包装)。 这