mysql排序索引优化

Posted 一个phper的日常

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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去限定了。



以上是关于mysql排序索引优化的主要内容,如果未能解决你的问题,请参考以下文章

Mysql索引优化2

Mysql调优-4通过索引进行优化

Mysql之order by|group by 排序优化

mysql调优排序优化,子查询优化

需要帮助优化 mysql 查询以使其按索引快速排序

Mysql 索引优化 - 2