1.切忌使用select *
1.1 当query的字段大小总和小于max_length_for_sort_data而且排序的字段不是text|blob类型时,会用改进后的算法–单路排序,否则用老的–多路排序。
1.2 两种算法的数据都有可能超出sort_buffer的容量,超出之后,会创建临时表进行合并排序,导致多次I/O,但是用单路排序的风险会大一些,所以要提高sort_buffer_size。
2.尝试提高sort_buffer_size
不管哪种算法,提高这个参数都会提高效率,当然要根据系统的能力去提高,因为这个参数是针对每个进程的
3.尝试提高max_length_for_sort_data
提高这个参数,会增加用改进后算法(单路排序)的概率。但是如果设太高,数据总容量超出sort_buffer_size的概率就增大,明显症状是高的磁盘I/O活动和低的处理器使用率。