mysql排序索引优化
为排序使用索引
KEY a_b_c (a,b,c)
order by 能使用索引最左前缀
-order by a -order by a,b -order by a,b,c -order by a desc,b desc,c desc
如果where使用索引的最左前缀定义为常量,则order by能使用索引
-where a=const order by b,c -where a=const and b=const order by c -where a=const order by b,c -where a=const and b>const order by b,c
不能使用索引进行排序
-order by a asc,b desc,c desc //排序不一致 -where g=const order by b,c //丢失a索引 -where a=const order by c //丢失b索引 -where a=const order by a,d //d不是索引的一部分 -where a in (...) order by b,c //对于排序来说,多个相等条件也是范围查询
GROUP BY 关键字优化
1、group by 实质是先排序后分组,遵照索引的最佳左前缀。
2、当无法使用索引列,增大max_length_for_sort_data参数的设置+增大sort_buffer_size参数的设置
3、where 高于having,能写在where限定的条件就不要去having去限定了。