MySQL概述
基础篇
通用语法及分类
DCL
DQL
DML
DDL
函数
字符串函数
数值函数
日期函数
流程函数
约束
常用约束
外键约束
多表查询
多表关系
查询
内连接查询
外连接查询
自连接查询
联合查询
子查询
事务
进阶篇
存储引擎
性能分析
查看执行频次
慢查询日志
profile
explain
索引
索引结构
索引分类
语法
使用规则
设计原则
SQL 优化
插入数据
主键优化
order by优化
group by优化
limit优化
count优化
update优化(避免行锁升级为表锁)
视图
存储过程
触发器
锁
InnoDB 引擎
事务原理
MVCC
数据类型
权限一览表
图形化界面工具
order by优化 - MySql学习文档 - 笔下光年
网站首页
order by优化
1. Using filesort:通过表的索引或全表扫描,读取满足条件的数据行,然后在排序缓冲区 sort buffer 中完成排序操作,所有不是通过索引直接返回排序结果的排序都叫 FileSort 排序 2. Using index:通过有序索引顺序扫描直接返回有序数据,这种情况即为 using index,不需要额外排序,操作效率高 如果order by字段全部使用升序排序或者降序排序,则都会走索引,但是如果一个字段升序排序,另一个字段降序排序,则不会走索引,explain的extra信息显示的是`Using index, Using filesort`,如果要优化掉Using filesort,则需要另外再创建一个索引,如:`create index idx_user_age_phone_ad on tb_user(age asc, phone desc);`,此时使用`select id, age, phone from tb_user order by age asc, phone desc;`会全部走索引 总结: - 根据排序字段建立合适的索引,多字段排序时,也遵循最左前缀法则 - 尽量使用覆盖索引 - 多字段排序,一个升序一个降序,此时需要注意联合索引在创建时的规则(ASC/DESC) - 如果不可避免出现filesort,大数据量排序时,可以适当增大排序缓冲区大小 sort_buffer_size(默认256k)
上一篇:
主键优化
下一篇:
group by优化