gpt4 book ai didi

mysql - 如果在SELECT和WHERE子句中都使用了子查询,是否执行了多次?

转载 作者:行者123 更新时间:2023-11-29 06:28:20 25 4
gpt4 key购买 nike

例如如果我写

SELECT (subquery) FROM table WHERE (subquery)

(subquery) 每行会被执行多次吗?

我会在 SELECT 中为其添加别名并在 WHERE 中使用它,但这似乎无效。

最佳答案

让我们看一下EXPLAIN PLAN 一个非常简单的查询,它说明了这个用例。

EXPLAIN 
SELECT (SELECT 1 FROM YOURTABLE LIMIT 1)
FROM DUAL
WHERE (SELECT 1 FROM YOURTABLE LIMIT 1);

忽略 LIMIT 1,它们只是为了避免在我的测试表上出现多行错误。

结果集将是

'1', 'PRIMARY', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'No tables used'
'3', 'SUBQUERY', 'YOURTABLE', 'index', NULL, 'PRIMARY', '4', NULL, '6', 'Using index'
'2', 'SUBQUERY', 'YOURTABLE', 'index', NULL, 'PRIMARY', '4', NULL, '6', 'Using index'

如您所见,是的,子查询将执行两次。

如果您的子查询的值要在多个地方使用,那么您可以考虑使用 JOIN 代替。

关于mysql - 如果在SELECT和WHERE子句中都使用了子查询,是否执行了多次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29502012/

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