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

MySQL认为子查询不是在派生的!

邴星洲
2023-03-14
问题内容
EXPLAIN SELECT node_id 
          FROM node 
         WHERE person_id IN (SELECT person_id 
                               FROM user 
                              WHERE is_locked = 0);

MySql中的结果告诉我子查询是派生的。但这不是!

(我知道可以很容易地将其重写为JOIN,但是我想知道为什么MySQL认为这是一个依赖的子查询。)


问题答案:

这是MySQL查询优化器中的错误。看起来,如果子查询中的表与主查询中的表匹配,则即使显然不应该将其视为从属子查询,也没有容易解决的方法。对不起; 去参加。



 类似资料:
  • 前面我们介绍了如何使用 SELECT、INSERT、UPDATE 和 DELETE 语句对 MySQL 进行简单访问和操作。下面在此基础上开始学习子查询。 子查询是 MySQL 中比较常用的查询方法,通过子查询可以实现多表查询。 子查询指将一个查询语句嵌套在另一个查询语句中。子查询可以在 SELECT、UPDATE 和 DELETE 语句中使用,而且可以进行多层嵌套。在实际开发时,子查询经常出现在

  • 问题内容: 我知道如何使用派生表,但是我仍然可以真正看到使用它们的任何真正优势。 例如,在下面的文章http://techahead.wordpress.com/2007/10/01/sql-derived- tables/中 ,作者试图展示使用派生表的查询优于没有示例的查询的优点,我们要生成一个报告,以显示每个客户在1996年下的订单总数,我们希望该结果集包括所有客户,包括当年未下订单的客户和从

  • 问题内容: 如标题所述,我想要一个解决方法… 干杯 问题答案: 您可能会希望将an添加到嵌套查询中。

  • 问题内容: 我很好奇为何应该比更快地执行。 当比尔·卡尔文提出一个要点时,我正在回答一个问题。当您使用它时,它使用相关子查询(依赖子查询),而IN()仅使用子查询。 解释显示,并且两者都使用了一个依赖子查询,并且都只使用了一个子查询..所以我很好奇关联子查询如何比子查询更快? 我以前使用过EXISTS,它的执行速度比IN快,这就是我感到困惑的原因。 这是带有说明的SQLFIDDLE 一些问题 在上

  • 问题内容: 谁能看到以下查询出了什么问题? 当我运行它时,我得到: #1064-您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第8行的’a where a.CompetitionID = Competition.CompetitionID’附近使用 问题答案: 主要问题是内部查询不能与外部语句上的子句相关,因为在内部子查询执行之前,where过滤器首先应用于要

  • 我不确定这是否是一个错误,但我遇到了一些主要的性能问题。EF Core正在为一个简单的语句生成多个查询。 这是查询: 预期结果: 然而,EF正在生成: UPDATE用EF core 2.1.0-preview2-Final测试过还是一样的问题