SQL - 使用同一个表的外部查询和子查询
问题描述:
我想了解以下简单查询的逻辑:SQL - 使用同一个表的外部查询和子查询
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)
)
我读过有关子查询,也IV”我一直在寻找一个相关的问题,我还没有找到明确的答案。
我的问题是如何知道这个查询的复杂性(子查询运行多少次)。
我不太确定子查询是如何工作的,因为我在子查询中使用了外部查询中的表。
答
这(可怕,可怕,没有好,非常差)查询等效于:
select * from table1 as t1 join table2 as t2 on t1.code_value = t2.source_code;
如果表之间的关系是1:1或1:N,则理论复杂度为O(n)的。
实际的复杂性是依赖于数据库/数据结构/统计数据。
当涉及到性能时,从来没有确定的答案。这可能会根据您的指数,表格大小等而有所不同。运行一个执行计划。 – sagi