摘要: 和很多其他关系型数据库不通,MySQL并不会在生成查询字节码来执行查询。MySQL生成查询的一棵指令树,然后通过存储引擎执行完成这棵指令树并返回结果。最终的执行计划包含了重构查询的全部信息。如果某个查询执行EXPLAIN EXTENDED 之后,在执行SHOW WARNINGS,就可以看到重构出... 阅读全文
posted @ 2015-12-09 23:11 郑彦秋 阅读(677) 评论(0) 推荐(0) 编辑
摘要: MySQL中‘关联(join)’ 一词包含的意义比一般意义上理解的要更广泛。总的来说,MySQL认为任何一个查询都是一次‘关联’ --并不仅仅是一个查询需要到两个表的匹配才叫关联,索引在MySQL中,每一个查询,每一个片段(包括子查询,设置基于表单的select)都可能是关联。 所以,理解My... 阅读全文
posted @ 2015-12-07 23:10 郑彦秋 阅读(967) 评论(0) 推荐(0) 编辑
摘要: 查询的生命周期的下一步是将一个sql转化成一个执行计划,MySQL再依照这个执行计划和存储引擎进行交互。这包括多个子阶段:解析sql,预处理,优化sql执行计划。这个过程中任何错误(例如语法错误)都可能终止查询。这里不打算详细介绍MySQL内部实现,而只是选择性的介绍其中几个独立的部分,在实际中... 阅读全文
posted @ 2015-12-02 00:08 郑彦秋 阅读(424) 评论(0) 推荐(0) 编辑
摘要: 当希望MySQL能够以更高的性能运行查询时,最好的办法就是弄清楚MySQL是如何优化和执行查询的。一旦理解这一点,很多查询优化实际上就是遵循一些原则让优化器能够按照预想的合理的方式运行。 换句话说,是时候回头看看我们之前讨论的内容了:MySQL执行一个查询的过程。当向MySQL发送一个请求的时... 阅读全文
posted @ 2015-12-01 00:27 郑彦秋 阅读(333) 评论(0) 推荐(0) 编辑
摘要: 在优化有问题的查询时,目标应该是找到一个更优的方法获得实际需要的结果--而不一定总要从MySQL获取一模一样的结果集。有时候可以查询转换一种写法让其返回一样的结果,但是性能更好。但也可以通过修改应用代码,用另一种方式完成查询,最终达到一样的目的。这里我们将介绍如何通过这种方式来重构查询,并展示合... 阅读全文
posted @ 2015-11-30 22:46 郑彦秋 阅读(1167) 评论(1) 推荐(1) 编辑
摘要: 在确定查询只是返回需要的数据之后,接下来应该看看查询为了返回结果是否扫描了过多的数据。对于MySQL,最简单的衡量查询开销的三个指标如下: 1响应时间,2扫描行数,3返回行数 没有那个指明能够完美的衡量查询的开销,但他们大致反映了MySQL在内存执行查询时需要访问多少数据,并可以大概推算出查... 阅读全文
posted @ 2015-11-29 22:42 郑彦秋 阅读(1011) 评论(1) 推荐(0) 编辑
摘要: 查询优化,索引优化,库表结构优化需要齐头并进,一个不能落。 为什么查询速度会慢 在阐释编写快速的查询之前,需要清楚一点,真正重要的是响应时间。如果把查询看做是一个任务的话,那么它由一系列子任务构成,每个子任务都会消耗一定的时间。如果要优化查询,实际上要优化其子任务,要么消除其中一些子任务... 阅读全文
posted @ 2015-11-27 23:17 郑彦秋 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 即使使用正确的类型创建了表并加上了合适的索引,工作也米有结束:还需要韦斌表和所以你来确保他们都正常工作。维护表有三个主要的目的:找到并修复损坏的表,维护准确的索引统计信息,减少碎片。 找到并修复损坏的表 更新索引统计信息 records_in_range()和 info() 减少索引和数据... 阅读全文
posted @ 2015-11-26 00:06 郑彦秋 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 理解索引最好的办法是结合示例,所以这里准备了一个索引的案例。 假设要设计一个在线约会网站,用户信息表有很多列,包裹国家,地区,城市,性别,眼睛颜色,等等。完整必须支持上面这些特征的各种组合来搜索用户,还不行一些根据用户的最后在线时间,其他会员对用户的屏风等对用户进行排序并对结果进行限制。如何世... 阅读全文
posted @ 2015-11-25 23:37 郑彦秋 阅读(1912) 评论(0) 推荐(0) 编辑
摘要: 索引和锁可以让查询锁定更少的行。如果你的查询从不访问那些不需要访问的行,那么就会锁定更少的行,从两个方面来看这对性能都有好处。首先,虽然innodb的行锁效率很高,内存使用也很少,但是锁定行的时候仍然会带来额外的开销,其次,锁定超过需要的行会增加锁竞争,并减少并发性。 innodb只有在访问行... 阅读全文
posted @ 2015-11-25 21:44 郑彦秋 阅读(3045) 评论(0) 推荐(0) 编辑