美文网首页架构SQLJava 程序员
mysql调优从书写sql开始

mysql调优从书写sql开始

作者: 马小莫QAQ | 来源:发表于2020-11-19 19:13 被阅读0次

理论知识

  • MySQL 的运行机制
  • Mysql 的SQL关键字执行顺序

1、MySQL 的优化方案有哪些?

1、MySQL 数据库常见的优化手段分为三个层面:

  • SQL 和索引优化
  • 数据库结构优化
  • 系统硬件优化等

前两个可以通过日常的书写sql来实现,养成好的习惯可以事半功倍。

2、SQL 和索引优化习惯准则:

  • 习惯1:我们应该尽可能的使用主键查询,而非其他索引查询,因为主键查询不会触发回表查询,因此节省了一部分时间,变相的提高了查询的性能。
  • 习惯2:避免在 where 查询条件中使用 != 或者 <> 操作符,因为这些操作符会导致查询引擎放弃索引而进行全表扫描。
  • 习惯3:(查询具体的字段而非全部字段)要尽量避免使用 select *,而是查询需要的字段,这样可以提升速度,以及减少网络传输的带宽压力。
  • 习惯4:(优化子查询)尽量使用 Join 语句来替代子查询,因为子查询是嵌套查询,而嵌套查询会新创建一张临时表,而临时表的创建与销毁会占用一定的系统资源以及花费一定的时间,但 Join 语句并不会创建临时表,因此性能会更高。
  • 习惯5:(注意查询结果集)我们要尽量使用小表驱动大表的方式进行查询,也就是如果 B 表的数据小于 A 表的数据,那执行的顺序就是先查 B 表再查 A 表。
  • 习惯6:(不要在列上进行运算操作)不要在列字段上进行算术运算或其他表达式运算,否则可能会导致查询引擎无法正确使用索引,从而影响了查询的效率。
  • 习惯7:(适当增加冗余字段)增加冗余字段可以减少大量的连表查询,因为多张表的连表查询性能很低,所有可以适当的增加冗余字段,以减少多张表的关联查询,这是以空间换时间的优化策略。

3、数据库结构优化习惯准则

  • 习惯1:(最小数据长度)一般说来数据库的表越小,那么它的查询速度就越快,因此为了提高表的效率,应该将表的字段设置的尽可能小,比如身份证号,可以设置为 char(18) 就不要设置为 varchar(18)。
  • 习惯2:(使用最简单数据类型)能使用 int 类型就不要使用 varchar 类型,因为 int 类型比 varchar 类型的查询效率更高。
  • 习惯3:(尽量少定义 text 类型)text 类型的查询效率很低,如果必须要使用 text 定义字段,可以把此字段分离成子表,需要查询此字段时使用联合查询,这样可以提高主表的查询效率。
  • 习惯4:(适当分表、分库策略)分表和分库方案也是我们经常说的垂直分隔(分表)和水平分隔(分库)。

2、正确使用联合索引

使用了 B+ 树的 MySQL 数据库引擎,比如 InnoDB 引擎,在每次查询复合字段时是从左往右匹配数据的,因此在创建联合索引的时候需要注意索引创建的顺序。例如,我们创建了一个联合索引是 idx(name,age,sex),那么当我们使用,姓名+年龄+性别、姓名+年龄、姓名等这种最左前缀查询条件时,就会触发联合索引进行查询;然而如果非最左匹配的查询条件,例如,性别+姓名这种查询条件就不会触发联合索引。

  • 慢查询排查慢查询通常的排查手段是先使用慢查询日志功能,1.查询出比较慢的 SQL 语句,2.然后再通过 explain 来查询 SQL 语句的执行计划,最后分析并定位出问题的根源,再进行处理。
  • 配置开启说明(需要注意的是,在开启慢日志功能之后,会对 MySQL 的性能造成一定的影响,因此在生产环境中要慎用此功能)我们需要配置 my.cnf 中的“slow_query_log=1”即可,并且可以通过设置“slow_query_log_file=/tmp/mysql_slow.log”来配置慢查询日志的存储目录,但这种方式配置完成之后需要重启 MySQL 服务器才可生效。

具体查询可以通过mysql的Explain执行计划来排查

3、附Explain参数说明

以上字段中最重要的就是 type 字段,它的所有值如下所示:

特别注意:当 type 为 all 时,则表示全表扫描,因此效率会比较低,此时需要查看一下为什么会造成此种原因,是没有创建索引还是索引创建的有问题?以此来优化整个 MySQL 运行的速度。

来源:Coding测试
原文地址:https://www.cnblogs.com/CodingTest/p/14004008.html?utm_source=tuicool&utm_medium=referral

相关文章

  • mysql调优从书写sql开始

    理论知识 MySQL 的运行机制 Mysql 的SQL关键字执行顺序 1、MySQL 的优化方案有哪些? 1、My...

  • mysql调优从书写sql开始

    理论知识 MySQL 的运行机制公众号:Coding测试 Mysql 的SQL关键字执行顺序 1、MySQL 的优...

  • 数据库调优

    SQL调优 这是最常用、每一个技术人员都应该掌握基本的SQL调优手段(包括方法、工具、辅助系统等)。以MySQL为...

  • MySQL索引和SQL调优

    MySQL索引和SQL调优 本文有参考网上其他相关文章,本文最后有附参考的链接 MySQL索引 MySQL支持诸多...

  • MySQL索引和SQL调优

    MySQL索引和SQL调优 本文有参考网上其他相关文章,本文最后有附参考的链接 MySQL索引 MySQL支持诸多...

  • 2020最新调优、微服务、框架、分布式指南,我的“大厂”不是梦!

    01 性能调优学习指南 MySQL Tomcat JVM 1.1 调优面试指南 1.1.1 调优面试之MySQL(...

  • MySQL索引和SQL调优

    [TOC] MySQL索引和SQL调优 本文有参考网上其他相关文章,本文最后有附参考的链接 MySQL索引 MyS...

  • 从一个问题出发认识MySQL(一)

    1. 提问 问: MySQL中如何对SQL性能调优? 2. 当我们在谈到SQL性能优化的时候,我们究竟在讨论什么?...

  • MqSQL - 调优手段

    SQL调优 SQL 调优往往是解决数据库问题的第一步,往往投入少部分精力就能获得较大的收益。SQL 调优主要目的是...

  • MySQL 索引和 SQL 调优

    MySQL索引 MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引...

网友评论

    本文标题:mysql调优从书写sql开始

    本文链接:https://www.haomeiwen.com/subject/tgvliktx.html