MySQL系列(19): SELECT 查询语句优化

  MySQL 查询是以 SELECT 语句形式执行数据库中的所有查找操作,SELECT 操作在执行的 SQL 语句中占大比例,SELECT 调优可以说是对 SQL 优化的首要任务。

  查询调优除了应用于 SELECT 语句外,还适用于诸如 create table…as select、insert in to…select 和 delete 语句中的 where 子句等构造。这些语句还有额外的性能考虑,因为它们将写操作与面向读的操作结合在了一起。

阅读更多

MySQL系列(18): 索引失效分析

  使用索引来提高查询性能效果是显著的,但不正确的 SQL 语句使用也会导致索引失效,索引使用未达预期,甚至执行全表扫描,此情况是严重影响性能的,在编写 SQL 语句时特别注意。

  特别强调,在每提交一条 SQL 语句时,必须使用 Explain 分析下索引的的使用。在生产环境或测试环境下,小数据的 SQL 执行感觉不到性能的差异,但一旦发布到线上大数据表,不正确的 SQL 可能会严重影响生产库的性能,并给业务带了损失,此情况仍时有发生。

阅读更多

MySQL系列(17): EXPLAIN输出信息之 Extra 字段解释

  MySQL 查询执许计划 EXPLAIN 输出的信息有个扩展信息字段 Extra,该字段包含了有关 MySQL 如何解析查询的其他信息,可以更好地帮助理解执行计划。

  该字段常见的值有 Using index、Using where。若想尽可能提高查询效率,需要关注 Using filesort 和 Using temporary 值,该值会影响查询的性能。

阅读更多

MySQL系列(16):理解执行计划-EXPLAIN

  MySQL 优化器会根据 表、列、索引WHERE 子句中的条件的详细信息,会考虑许多技术来更高效地执行 SQL 查询中涉及的查找。可以在不读取所有行的情况下执行对大表的查询,可以在不比较每个行组合的情况下执行涉及多个表的联接。

  MySQL 优化器会选择最有效查询的操作集称为 查询执行计划,也称为 EXPLAIN 计划。MySQL EXPLAIN 官方文档MySQL EXPLAIN 语句

   我们需要理解 EXPLAIN 计划中的操作是否已达到预期,以及对那些低效的操作进行改进。

阅读更多

MySQL系列(15):索引优化

  给列创建索引是提高 SELECT 查询性能的最佳方式。索引类似于表行的指针,在查询时可以根据索引快速定位某些行与 WHERE 子句中的条件匹配,并检索该行的其他列值。MySQL 所有数据类型都可以创建索引。

  虽然添加索引对查询带来的性能提效果是显著的,但也不是为每一个列都创建索引为好,索引还会增加 插入、更新和删除的成功,因为必须更新每个索引。 

阅读更多