我正在尝试理解以下简单查询的逻辑:
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)
)
我读过有关子查询的信息,我也一直在寻找与我相关的问题,我还没有找到明确的答案。
我的问题是我怎么知道这个查询的复杂性(子查询运行了多少次)。
我不太确定子查询是如何工作的,因为我在子查询中使用外部查询中的表。
答案 0 :(得分:3)
这个(可怕的,可怕的,不好的,非常糟糕的)查询相当于:
select * from table1 as t1 join table2 as t2 on t1.code_value = t2.source_code;
如果表之间的关系是1:1或1:N,则理论复杂度为O(n) 实际的复杂性取决于数据库/数据结构/统计。