美文网首页
17、MySQL查询优化

17、MySQL查询优化

作者: hello大象 | 来源:发表于2017-12-19 11:13 被阅读0次
Q:

1、查找分析查询速度慢的原因:
mysql里面有一块内容叫慢查询日志,用来记录查询较慢的语句。这里面我们可以开启它,只要有查询慢的语句都可以记录下来。这样就可以着重的去分析慢的查询语句。详细看补充内容



2、也可以使用show profile

并且把执行的时间也保存下来。并且还可以通过这个临时表的主键ID去查哪一条sql语句是在什么地方发生了一个慢的操作。就是时间花费在什么地方了,是可以知道的。

如:



查询指定id的语句时间花费在什么地方
3、也可以使用:

就是当服务器启动至今一些内容的计数
查看执行的次数
增删改查的一些语句都可以记录
4、

可以帮助记录线程,记录都有哪些是有问题的
可以看到只有一个线程
5、

例如:



可以看出来包含索引使用情况、扫描行数、索引查询类型、等等,进行分析sql查询慢的原因,explain的别名是desc,也可以。

如何优化:优化查询过程中的数据访问



三范式
1NF:字段不可分;
2NF:有主键,非主键字段依赖主键;
3NF:非主键字段不能相互依赖;
解释:
1NF:原子性 字段不可再分,否则就不是关系数据库;
2NF:唯一性 一个表只说明一个事物;
3NF:每列都与主键有直接关系,不存在传递依赖;

第二范式(2NF)和第三范式(3NF)的概念很容易混淆,区分它们的关键点在于,2NF:非主键列是否完全依赖于主键,还是依赖于主键的一部分;3NF:非主键列是直接依赖于主键,还是直接依赖于非主键列

比如说第三范式需要多表的关联,这样来说效率可能会偏低一点,可以做冗余,降低范式,比如经常查询一张表的内容,但是需要关联查询另外一张表的一个字段,可以把这个字段冗余的存到第一个表里面去。用空间去换取时间。

优化长难的查询语句:


可以方便的做缓存。

有可能在删除的时候会锁住这张表,



分表或分区,




explain全盘扫描,取近似值,
增加汇总表,每次信息改变了,就把汇总表信息改一遍,每次查询的时候直接查询汇总表就行了。当然也可以把汇总信息做缓存。


没有索引会导致全文扫描,效率会大打折扣。

子查询(嵌套查询)

distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是distinct只能返回它的目标字段,而无法返回其它字段


文件排序导致性能消耗。

相关文章

  • MySQL性能调优

    MYSQL查询语句优化 mysql的性能优化包罗甚广: 索引优化,查询优化,查询缓存,服务器设置优化,操作系统和硬...

  • 17、MySQL查询优化

    1、查找分析查询速度慢的原因:mysql里面有一块内容叫慢查询日志,用来记录查询较慢的语句。这里面我们可以开启它,...

  • MySQL

    MySQL查询优化之道

  • mysql优化

    MYSQL优化 为查询缓存优化你的查询 EXPLAIN你的SELECT查询。根据结果给出分析相应的查询优化 当只要...

  • 9月17-MySQL性能优化

    MySQL性能优化策略 1、MySQL内核架构 2、索引原理与查询优化 加速MySQL高效查询数据的数据结构 二分...

  • MySQL 索引及查询优化总结-2018-03-20

    MySQL 索引及查询优化总结 文章《MySQL查询分析》讲述了使用MySQL慢查询和explain命令来定位my...

  • mysql性能优化-慢查询分析、优化索引和配置

    mysql性能优化-慢查询分析、优化索引和配置 分类:Mysql/postgreSQL 目录 一、优化概述 二、查...

  • MySql高级之性能分析(四)

    1.MySql Query Optimizer:查询优化器。 ​ 1). Mysql中有专门负责优化SELECT语...

  • MySQL大数据量查询方法及优化

    看了一些关于MySQL查询的优化方法,发现MySQL的优化最离不开的就是索引,还有其他优化的小建议。 查询方法: ...

  • 11-mysqlSQL分析

    六星教育 - java-mysql优化1909 SQL优化 所谓SQL优化:基于MySQL的优化器查询规则来优化S...

网友评论

      本文标题:17、MySQL查询优化

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