gpt4 book ai didi

MySQL "in"语句

转载 作者:行者123 更新时间:2023-11-29 02:37:57 26 4
gpt4 key购买 nike

这个问题真的只是出于好奇。有人可以阐明为什么这个查询:

insert into c (
select a.* from a,b
where a.x=8 and y=1 and b.z=a.z and active > '2010-01-07 00:00:00'
group by a.z
)

当涉及相当多的记录时,是否比下面的查询快一百万倍(或足够接近)?

insert into c (
select * from a
where x=8 and y=1 and z in (
select z from b where x=8 and active > '2010-01-07 00:00:00' group by z
)
)

我的意思是,连接表的查询比使用 IN 快得多,但这是为什么呢?

最佳答案

因为子查询对封闭查询中的每一行都执行一次,而连接只执行一次。

数据库针对基于集合的查询进行了优化,因此大多数时候连接会比子查询更快。

您肯定不是唯一遇到这种情况的人(这里是 one example)。看起来 MySql 的查询优化器没有优化这种类型的子查询。

关于MySQL "in"语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2063381/

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