mysql优化三.ppt

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
mysql优化三.ppt

Query是否使用索引 -示例 Mysql 另一个强有力的工具 Explain 这个工具能详细告诉你 Mysql 打算如何、执行你这个Query: EXPLAIN 解析 Possible_key :该查询可以利用的索引,如果没有任何索引可以使用null Key : Mysql 从 Possible_key 中所选择使用索引 Key_len :被选中使用索引的索引长度 Rows :显示MySQL认为它执行查询时必须检查的行数 示例 再来试一试 示例 创建索引可不是简单话题 第一:占磁盘空间 哪些列需要创建索引 较频繁的作为查询条件字段应该创建索引 select * from emp where empno = 1 唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件 select * from emp where sex = 男 更新非常频繁的字段不适合创建索引 select * from emp where logincount = 1 不会出现在WHERE子句中字段不该创建索引:) 如何创建索引 ALTER TABLE emp ADD INDEX (empno); ALTER TABLE emp DROP INDEX empno; SHOW INDEXES FROM emp \G; 主键 唯一性约束 EXPLAIN EXPLAIN告诉我们MYSQL将使用怎样的执行计划来优化Query EXPLAIN详解 id SELECT识别符。这是SELECT的查询序列号 id 示例 SELECT * FROM emp WHERE empno = 3 and ename = (SELECT ename FROM emp WHERE empno = 4) \G; select_type PRIMARY :子查询中最外层查询 SUBQUERY : 子查询内层第一个SELECT,结果不依赖于外部查询 DEPENDENT SUBQUERY:子查询内层第一个SELECT,依赖于外部查询 UNION :UNION语句中第二个SELECT开始后面所有SELECT, SIMPLE UNION RESULT UNION 中合并结果 UNION 示例 EXPLAIN SELECT empno,ename FROM emp where empno =3 UNION SELECT deptno,dname FROM dept where deptno =4 \G; Table 显示这一步所访问数据库中表名称 Type 对表访问方式 ALL SELECT * FROM emp \G 完整的表扫描 通常不好 SELECT * FROM (SELECT * FROM emp WHERE empno = 3) a ; system 表仅有一行(=系统表)。这是const联接类型的一个特 const 表最多有一个匹配行 Possible_keys Possible_keys 该查询可以利用的索引,如果没有任何索引显示 null Key Mysql 从 Possible_keys 所选择使用索引 Rows 估算出结果集行数 EXPLAIN SELECT * FROM emp WHERE empno 50 \G; EXPLAIN SELECT * FROM emp WHERE empno = 50 \G; Extra 查询细节信息 No tables Query语句中使用FROM DUAL 或不含任何FROM子句 Using filesort 当Query中包含 ORDER BY 操作,而且无法利用索引完成排序, Impossible WHERE noticed after reading const tables: MYSQL Query Optimizer 通过收集统计信息不可能存在结果 Using temporary 某些操作必须使用临时表,常见 GROUP BY ; ORDER BY Using where 不用读取表中所有信息,仅通过索引就可以获取所需数据; 优化 limit 当只一行数据使用limit 1 Query优化(原则) 优化需要优化的Query 定位优化对象性能瓶颈 从Explain入手 永远小结果集驱动大结果集# 尽可能在索引中完成排序 只取自己需要的Column 仅仅使用最有效的过滤条件 尽可能避免复杂的join和子查询 第二:对于INSERT UPDATE DELETE 效率低 画

文档评论(0)

四娘 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档