mysql优化

EXPLAIN 解析【这是查询sql是否效率够高经常用到的关键字】

Possible_key:该查询可以利用的索引,如果没有任何索引可以使用null
Key                : Mysql从 Possible_key中所选择使用索引
•Key_len         :被选中使用索引的索引长度
Rows             :显示MySQL认为它执行查询时必须检查的行数

实例


实例2


创建所有的优缺点

优点:查询速度快

缺点:影响insert update的效率、占用磁盘空间


哪些列需要创建索引

•较频繁的作为查询条件字段应该创建索引
•select * from empwhere empno =1
•唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件
•select * from empwhere sex = '男'
•更新非常频繁的字段不适合创建索引
•select * from empwhere logincount = 1
•不会出现在WHERE子句中字段不该创建索引:)

创建索引的方法

•ALTER TABLE emp ADD INDEX(empno);
•ALTER TABLE emp DROP INDEXempno;
•SHOW INDEXES FROM emp\G;
•主键
•唯一性约束
查询类型:

•PRIMARY    :子查询中最外层查询
•SUBQUERY :子查询内层第一个SELECT,结果不依赖于外部查询
•DEPENDENTSUBQUERY:子查询内层第一个SELECT,依赖于外部查询
•UNION   :UNION语句中第二个SELECT开始后面所有SELECT,
•SIMPLE
UNION RESULT UNION 中合并结

EXPLAIN

SELECTempno,enameFROM empwhere empno =3

UNION

SELECT deptno,dnameFROM dept where deptno=4 \G;

优化原则

•优化需要优化的Query
•定位优化对象性能瓶颈
•从Explain入手
•永远小结果集驱动大结果集#
•尽可能在索引中完成排序
•只取自己需要的Column
•仅仅使用最有效的过滤条件
•尽可能避免复杂的join和子查询

•查询细节信息
•No tables 

Query语句中使用FROM DUAL 或不含任何FROM子句

•Using filesort 

当Query中包含 ORDER BY 操作,而且无法利用索引完成排序,

• ImpossibleWHERE noticed after reading const tables: MYSQL Query Optimizer
•通过收集统计信息不可能存在结果
•Using temporary
•某些操作必须使用临时表,常见GROUP BY  ; ORDER BY
•Using where
•不用读取表中所有信息,仅通过索引就可以获取所需数据;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值