1. DISTINCT效率极差,可以选择替换groupby,最好能在代码内部去重
2. filesort效率也很低
3. 能使用连接查询尽量不要使用子查询
4. in查询包含内容很多的情况下,不要通过foreach遍历,mybatis会解析成item in (#{item1},#{item2},……)的形式,可以在代码中拼接好字符串后直接用 item in (#{itemString})的形式优化解析过程(可能产生sql注入问题)
5. in查询嵌套表查询时能用连接查询替换尽量替换,因为in查询当括号内元素过多时性能极差。
6. 根据索引查询时当某一属性过多,mysql会将索引匹配自动优化为全表查询