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 @   ppjj  阅读(271)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2018-01-16 java递归排序
点击右上角即可分享
微信分享提示