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

Splitting Subqueries into Seperate Queries is more efficient?

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

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 语句。我不知道知情策略与当前子查询(上面发布)之间有什么区别。子查询还在其 IN 语句中 returns 一个 id 列表,如果使用单独的查询,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 的 return 进行馈送,最后 c 将被调用被调用的将使用 b 中的 return 进行馈送。然后显示c的return。

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

我相信你问的是什么区别b/w相关子查询和子查询及其性能方面

子查询:- 内层查询只执行一次 内层查询先执行,外层查询使用内层查询的输出

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

使用 Co-related 子查询性能下降,因为它执行 NXM 迭代