一个mysql查询的效率讨论?

有两张表tableA与tableB,两表的数据都在20W以上,在goods_id上做了索引;现在要取出a表所有列,以及b表的goods_name;有两种方式:

一,直接join关联,但是在关联的情况下,不管你goods_id是否已经做了索引,a表肯定是全表扫描的情况,如果关联的表有四五张,那效率更低;

select a.*,b.goods_name from tableA as a left join a.goods_id on b.goods_id where a.status = 1;

二, 先分页查询a表的列(每页20条),然后在循环取出(比如在框架中用M('TableName') -> where("goods_id = {$v['goods_id']}") -> getField('goods_name'));其中M函数中实例的数据库模型类已经单例了;

请问,1和2哪种方式更有效率....其实在我看来肯定是2更有效率,但我们架构说2要连20次数据库要更慢,其实M函数里面已经单例了不存在连20次数据库的问题...但别人是架构,所以特此来问问

查看回复