MySQL 慢查询发现以及增删改查SQL优化
前言日常工作中,sql语句执行效率经常成为程序的性能瓶颈,如何快速的执行数据库的增删改查则是一个合格的后端程序员必备技能,本文描述了从发现执行慢的sql到如何优化增删改查的sql语句,以及从架构本身优化查询速度的一些方向,本文是我个人的经验之谈,不一定完全正确,如有错误,还望指出 优化前先了解一些基本的MySQL存储结构和索引基础知识在做性能优化之前,首先要对MySQL的数据存储结构要有一定的了解,只有当了解了结构,才能更清楚的知道为什么这样写sql执行会更快,为什么表结构这样设计,在同样的数据行的情况下,查询和写入效率都更高,由于MySQL常用的存储引擎是InnoDB,所以这里介绍的也是基于InnoDB的 InnoDB的存储结构InnoDB存储引擎中,表记录都是根据主键顺序组织存放,这种存储方式的表称为索引组织表,InnoDB的逻辑结构从大到小是表空间->段->区->页->行->列。 所有数据都被逻辑的存放在表空间中,表空间由各个段组成,常见的段:数据段、索引段、回滚段。 区是由连续的页组成的,在任何情况下每个区的大小都为1MB。为了保证区中页的连续性,InonoDB存储引擎一次从磁盘申请4-5个区。在默认情况下,InnoDB存储引擎的页的大小为16KB,即一个区中应有64个连续的页。从InnoDB1.0.x开始,可以通过参数KEY_BLOCK_…