gpt4 book ai didi

MySQL JOIN 子查询为假。子查询会执行吗?

转载 作者:行者123 更新时间:2023-11-29 05:17:41 25 4
gpt4 key购买 nike

考虑这个 MySQL 查询

SELECT <cols> FROM <tbl> INNER|LEFT JOIN (SELECT ...) AS sub_query ON FALSE

当然,由于 ON,无论 tblsub_query 中有什么,这都会产生一个空结果集。陈述总是错误的。

在我的情况下,我唯一可以控制的部分是 ON 语句。

我的问题是,MySQL 是否足够智能以检测到这种情况?然后完全跳过运行子查询并立即返回空结果集?

最佳答案

我们可以测试一下:

mysql> explain select * from mdl_user join (select 1) q on false;
+----+-------------+-------+------+---------------+------+---------+------+------+------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+------+---------------+------+---------+------+------+------------------+
| 1 | PRIMARY | NULL | NULL | NULL | NULL | NULL | NULL | NULL | Impossible WHERE |
| 2 | DERIVED | NULL | NULL | NULL | NULL | NULL | NULL | NULL | No tables used |
+----+-------------+-------+------+---------------+------+---------+------+------+------------------+
2 rows in set (0.02 sec)

mysql> select * from mdl_user join (select 1) q on false;
Empty set (0.00 sec)

这似乎表明是的,MySQL 检测到 on false 条件,并且不会打扰整个连接。

(抱歉,当时我埋头于moodle数据库)

关于MySQL JOIN 子查询为假。子查询会执行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30494661/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com