将子查询拆分为单独的查询更有效?



我有一个这样的子查询。基本上,我使用了多个分离的条件来形成多个子查询。

SELECT
this_.id AS y0_,
this_.a AS y1_,
this_.b AS y2_,
this_.c AS y3_,
this_.d AS y4_,
this_.e AS y5_ 
FROM
table_a this_ 
WHERE
this_.id IN (
SELECT
this_.a AS y0_ 
FROM
table_b this_ 
WHERE
this_.b=?
)

目前,我的数据库表中没有大量数据。执行查询所需的时间不到 0.01 秒。但是现在我被告知将每个子查询作为单独的查询,以将值列表提供给每个 IN 语句。我不知道知情策略与当前子查询(发布在上面)之间有什么区别。子查询还返回 id 列表到其 IN 语句,如果使用单独的查询,id 列表也会馈送到 IN 语句?为什么这两种策略在性能上有所不同。

有人告诉我,如果表中有大量数据,我当前的子查询会变慢。这两种策略都在执行相同的功能。那么为什么它会导致子查询的性能降低呢?

只需考虑一个示例 Java 方法调用

public static void main(String[] args){
System.out.print( c( b( a() ) ) );
}
public String a(){
return "success";
}
public String b(String string){
return string;
}
public String c(String string){
return string;
}

首先调用a,然后调用b将返回a,最后将调用c将返回b的馈送。然后将显示c的返回。

我假设在 MySQL 子查询中也遵循相同的功能。我说的对吗?那么,为什么子查询在与所有单独查询的总时间相比时会导致性能降低?

我相信你在问黑白相关子查询和子查询及其性能方面的区别是什么

子查询 :-内部查询仅执行一次 内部查询将首先执行,外部查询使用的内部查询的输出

相关子查询:-外部查询将首先执行,对于外部查询的每一行,将执行内部查询。因此,内部查询将在外部查询的结果中执行与 no.of 行一样多的次数。

使用协同相关的子查询性能会降低,因为它执行 NXM 迭代

相关内容

  • 没有找到相关文章

最新更新