mysql 联接与子查询的效率哪一个高?
表A: id, name, type_id, createtime.
表B: type, type_name.
现在要查询A中createtime 最新的前10名的信息,包括A的name和B中的type_name.
正常的查询如下:
select a.name, a.createtime,b.type_name
from a left join b on a.type_id=b.type
order by a.createtime desc
limit 10
另一写法:
select a.name, a.createtime, b.type_name
from (select * from a order by createtime desc limit 10) a
left join b on a.type_id=b.type
如果在数据量很大的情况下,正常的写法要联接的数据会很大,而下一种写法由于先过滤了
一些记录,所以联接会少很多,是不是下一种会比上一种效率要好些呢?
这个问题也就是先过滤再联接还是先联接再过滤的效率比较问题,不知道mysql有没有优化.
请大家指教,谢谢.