日期:2014-05-17  浏览次数:20783 次

子查询会查询多次吗?
Select A From ATable Where ABID IN ( Select BID From BTable Where BCID IN ( Select CID From CTable Where C Like '%%' ) )

这个语句中的"ABID IN ( Select BID From BTable Where BCID IN ( Select CID From CTable Where C Like '%%' ) )"会执行一次还是会根据A中的数量执行多次?

我现在有3个表是这样的。


查询A表数据,

其中一个条件是C表的

A表和B表有关联

B表和C表有关联
Select A From ATable Where ABID IN ( Select BID From BTable Where BCID IN ( Select CID From CTable Where C Like '%%' ) )

感觉这样效率有点低。

用表联合或者Exists会不会好些?
------解决方案--------------------
应该是先执行结果集,再执行查询的
即是先Select CID From CTable Where C Like '%%' 
    再Select BID From BTable Where BCID IN (---)
    最后Select A From ATable Where ABID IN (---)
------解决方案--------------------
引用:
应该是先执行结果集,再执行查询的
即是先Select CID From CTable Where C Like '%%' 
    再Select BID From BTable Where BCID IN (---)
    最后Select A From ATable Where ABID IN (---)


+1