关联查询(join)与子查询(in):
两者select的时间复杂度是一样的(注:这里的select是指获得数据的方式,个数)。
唯一不同的是对于in子查询它每次执行内部查询的时候都必须重新构造一个JOIN结构(这就是大家常说的会将子查询转化成where exists(select 1 from a,b where a.id = b.id )),完成相应的初始化操作,并且在这次内部查询结束之后,要完成相应的析构函数,如index_init,index_end,而当外部查询是全表扫描的时候,这些操作的次数就是它的记录数,那么它们(构造,析构)所占用的性能也是显而易见的。简单一句话子查询的性能除了查询外,还消耗在JOIN的构造与析构过程。
Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有