SQL - 在外部查询和子查询中使用相同的表

时间:2016-11-06 08:49:49

标签: sql sql-server subquery

我正在尝试理解以下简单查询的逻辑:

select *
from table1 as t1 cross join table2 as t2
where t2.source_code = (
    select Max(t3.source_code)
    from table2 t3
    where t3.source_code in (t1.code_value)
    )

我读过有关子查询的信息,我也一直在寻找与我相关的问题,我还没有找到明确的答案。

我的问题是我怎么知道这个查询的复杂性(子查询运行了多少次)。

我不太确定子查询是如何工作的,因为我在子查询中使用外部查询中的表。

1 个答案:

答案 0 :(得分:3)

这个(可怕的,可怕的,不好的,非常糟糕的)查询相当于:

select * from table1 as t1 join table2 as t2 on t1.code_value = t2.source_code;

如果表之间的关系是1:1或1:N,则理论复杂度为O(n) 实际的复杂性取决于数据库/数据结构/统计。