order by优化

 

MySQL的排序有两种方式

1、Using filesort: 通过表的索引或全表扫描,读取满足条件的数据行,然后把数据行放在排序缓冲区sort buffer中完成排序操作,所有不是通过索引直接 返回排序结果的排序都叫filesort排序

2、Using index: 通过有序索引顺序扫描直接返回有序数据,这种情况即为using index,不需要额外排序,操作效率高

 

具体的要看另一份对应的sql文件,那里我演示了相关例子,快去看看吧

总结:

1、根据排序字段建立合适的索引,多字段排序时,也遵循最左前缀法则

2、尽量使用覆盖索引,避免使用select *

3、多字段排序,一个升序一个降序,此时需要注意联合索引在创建时的规则(ASC/DESC)

4、如果不可避免的出现filesort,大数据量排序时,可以适当增大排序缓冲区大小sort_buffer_size(默认256k)

5、当排序缓冲区的大小不足以排序我们的大数据量,那么就会在磁盘文件当中进行排序,此时性能会差