这里的半连接指的是广义半连接,即由各种运算符所构成的子查询与主查询之间的连接。尽管子查询的种类有很多,但其都是一种为实现子查询与主查询之间连接的表连接。
实际上,大部分子查询的执行计划都是以表连接的形式出现的,且与一般方式的表连接有所不同。由于表连接其实就是集合运算,从逻辑上看,执行连接的两个集合之间是一种水平关系,不论哪个集合被优先执行都不会对结果产生任何影响。既然这两种集合是水平关系,那么它们就应当遵循集合的交换原则,即不论如何交换两个集合的前后顺序都不会影响最终的结果。
可是子查询与主查询之间并不是水平关系,面是垂直关系(从属关系),这就意味着不论使用何种的子查询都必须确保不能改变主查询的完整性。
select t.company_id, t.sv_center_name, t.remark,t.sv_center_code
from NT_BB_SERVICE_CENTERS t
where --t.SV_CENTER_CODE='ZX0102' and
t.sv_center_id in (select sv_center_id
from NT_BB_SERVICE_SECTORS a
where
a.sv_sector_name='陈辉'-- a.COMPANY_ID = 1002
--and a.SV_SECTOR_CODE='P0103003'
)
执行计划: