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