比如这个sql语句
$sql='select n.*,c.* from tb_news as n left join tb_news_cate as c on(n.cateid=c.cateid) order by id desc limit 0,5';
要怎么拆,感觉left join效率不是很高
但是也有人说这样比拆出来效率高
那先不说效率,这个要怎么拆
$sql='select n.*,c.* from tb_news as n left join tb_news_cate as c on(n.cateid=c.cateid) order by id desc limit 0,5';
要怎么拆,感觉left join效率不是很高
但是也有人说这样比拆出来效率高
那先不说效率,这个要怎么拆
左连接
select n.*,c.* from tb_news as n left join tb_news_cate as c on(n.cateid=c.cateid) order by id desc
结果集中包含表 tb_news 的全部记录,表 tb_news_cate 中不满足连接条件的记录,在记录集中为 NULL右连接
select n.*,c.* from tb_news as n right join tb_news_cate as c on(n.cateid=c.cateid) order by id desc
结果集中包含表 tb_news_cate 的全部记录,表 tb_news 中不满足连接条件的记录,在记录集中为 NULL内连接
select n.*,c.* from tb_news as n inner join tb_news_cate as c on(n.cateid=c.cateid) order by id desc
结果集中包含表 tb_news 和表 tb_news_cate 中满足连接条件的记录一称为逗号连接
select n.*,c.* from tb_news as n, tb_news_cate as c where n.cateid=c.cateid order by id desc
#1 的称为子查询,效果与内连接一样
left join效率高些?
需要多表的话,没有比left join更高效的方法了吗
一般我是偏好left join...
如果是这样的话,可以写作
select n.*,c.* from (select * from tb_news order by id desc limit 0,5) as n left join tb_news_cate as c on(n.cateid=c.cateid)即只用表 tb_news 的5条记录参与连接,应该很高效了