MySQL右连接查询并分页需要注意性能优化

1,MySQL左连接查询并分页,可能右边表不存在满足查询条件需要的数据,应该返回空列表,但是左边表有数据就会返回数据,不符合实际情况的需求,这时需要先在左边表里先用exists子句来关联右边表中的某个字段的查询条件来判断是否存在右边表中的数据,如果不存在就返回空列表数据,这时就满足需求了,除非右边表也有数据。当然也可以直接等值连接inner join=left join (sub sql) where exist (sub sql)。

2,MySQL在连接查询时如果不是主表会产生临时表temporary,建议添加覆盖索引(比如需要副表中的三个字段,就添加三个字段的索引),order by没有索引会有filesort,如果order by是附属表字段时也会有临时表temporary。group by是先分组再排序,如果不排序order by null。

3,select distinct a,b,c会保证a b c三个字段都不相同,如果只想a字段不相同,则需要select a,b,c group by a;

posted @ 2021-01-16 12:54  ppjj  阅读(268)  评论(0编辑  收藏  举报