如何进行MySQL数据库调优以提升性能?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1717个文字,预计阅读时间需要7分钟。
概述:在常规情况下,我们需要操作大量数据量的数据库表时,必须关注SQL的开发规范、数据索引以及慢查询。
开发规范:1. 查询SQL都应该建立索引覆盖索引:(这里我们首先借鉴百度百科的索引覆盖概念)
概述:通常情况下我们需要操作数据量较大的数据库表时候,需要关注sql的开发规范、数据索引以及慢查询
开发规范: 1 查询sql都应该建立索引 覆盖索引:(这里我们先引用百度百科的解释)覆盖索引是select的数据列只用从索引中就能够取得,不必读取数据行,换句话说查询列要被所建的索引覆盖。索引是高效找到行的一个方法,但是一般数据库也能使用索引找到一个列的数据,因此它不必读取整个行。毕竟索引叶子节点存储了它们索引的数据;当能通过读取索引就可以得到想要的数据,那就不需要读取行了。一个索引包含了(或覆盖了)满足查询结果的数据就叫做覆盖索引。优点:减少了回表时间注:主键索引:叶子节点保存数据 ;辅助索引:叶子节点保存主键值 (基于innoDB引擎)
我们这里通过EXPLAIN语句查询(留意EXPLAIN输出的rows列,如果rows列太高,比如几千,上万,那么就需要考虑是否索引不佳或连接表的顺序不当)
联合索引 + 最左匹配原则 :(这里引用知乎普及一下知识)联合索引:索引的底层是一颗B+树,联合索引同样是一颗B+树,只不过联合索引的健值数量不是一个,而是多个,数据库依据联合索引最左的字段来构建B+树。
最左匹配原则:
联合索引(A,B,C),最左优先,以最左边的为起点任何连续的索引都能匹配上。
1)遇到范围查询(>、<、between、like)就会停止匹配。
2)因为Mysql中有查询优化器,会自动优化查询顺序,因此A,B,C顺序调换不影响查询结果。
本文共计1717个文字,预计阅读时间需要7分钟。
概述:在常规情况下,我们需要操作大量数据量的数据库表时,必须关注SQL的开发规范、数据索引以及慢查询。
开发规范:1. 查询SQL都应该建立索引覆盖索引:(这里我们首先借鉴百度百科的索引覆盖概念)
概述:通常情况下我们需要操作数据量较大的数据库表时候,需要关注sql的开发规范、数据索引以及慢查询
开发规范: 1 查询sql都应该建立索引 覆盖索引:(这里我们先引用百度百科的解释)覆盖索引是select的数据列只用从索引中就能够取得,不必读取数据行,换句话说查询列要被所建的索引覆盖。索引是高效找到行的一个方法,但是一般数据库也能使用索引找到一个列的数据,因此它不必读取整个行。毕竟索引叶子节点存储了它们索引的数据;当能通过读取索引就可以得到想要的数据,那就不需要读取行了。一个索引包含了(或覆盖了)满足查询结果的数据就叫做覆盖索引。优点:减少了回表时间注:主键索引:叶子节点保存数据 ;辅助索引:叶子节点保存主键值 (基于innoDB引擎)
我们这里通过EXPLAIN语句查询(留意EXPLAIN输出的rows列,如果rows列太高,比如几千,上万,那么就需要考虑是否索引不佳或连接表的顺序不当)
联合索引 + 最左匹配原则 :(这里引用知乎普及一下知识)联合索引:索引的底层是一颗B+树,联合索引同样是一颗B+树,只不过联合索引的健值数量不是一个,而是多个,数据库依据联合索引最左的字段来构建B+树。
最左匹配原则:
联合索引(A,B,C),最左优先,以最左边的为起点任何连续的索引都能匹配上。
1)遇到范围查询(>、<、between、like)就会停止匹配。
2)因为Mysql中有查询优化器,会自动优化查询顺序,因此A,B,C顺序调换不影响查询结果。

