mysql中sql优化_SQL的优化

mysql中sql优化_SQL的优化配置慢查询日志 set global slow_query_log = [ON|OFF] set global slow_query_log_file = /sql_log/slowlog.log …

配置慢查询日志

set global slow_query_log = [ON|OFF]
set global slow_query_log_file = /sql_log/slowlog.log
set global long_query_time= xx.xxx秒
set global log_queries_not_using_indexes= [ON|OFF]

代码100分

分析慢查询日志

代码100分mysqldumpslow [options][logs]
pt-query-digest [options][files][dsn]

实时监控慢查询

select id `user` , `host` ,DB,command, `time` ,state,info from information_schema.PROCESSList where time >=60;

分析执行计划

explain sql

id 列

  • id表示查询执行顺序
  • id相同时由上到下执行
  • id不同时由大到小执行

select_type 列

说明
SIMPLE 不包含子查询或是union操作的查询
PRIMARY 查询中如果包含任何子查询,那么最外层的查询则是PRIMARY
SUBQUERY SELECT列表中的子查询
DEPENDENT SUBQUERY 依赖外部结果的子查询
UNION UNION操作的第二个或是之后的查询的值为union
DEPENDENT UNION 当UNION作为子查询的时候,第二或者第二个后的查询的select_type值
UNION RESULT UNION产生的结果集
DERIVED 出现在from子句中的子查询

table 列

  • 指明从哪个表获取数据
  • <union M, N>由id列为M, N查询union产生的结果集
  • <derived N>/<subquery N> 由id列为N的查询产生的结果

partitions

  • 对于分区表,显示查询的分区id
  • 对于非分区表,显示null

type

性能由高到低

说明
NULL MySQL在优化过程中分解语句,执行时甚至不用访问表或索引,例如从一个索引列里选取最小值可以通过单独索引查找完成
system cost连接类型的一个特例,当查询的表只有一行时使用
const 表中有且只有一个匹配的行时使用,如对主键或唯一索引的查询,这是效率最高的联接方式
eq_ref 唯一索引或主键查找,对于每个索引键,表中只有一条记录与之匹配
ref 非唯一索引查找,返回匹配某个单独值的所有行
ref_or_null 类似与ref类型查询,但是附加了对null值列的查询
index_merge 使用了索引合并优化
range 索引范围扫描,常见于between, >, <这样的查询条件
index 全索引扫描,遍历索引树
all 全表扫描,效率最差

possible_keys

  • 查询时可能使用的索引

key

  • 查询时实际使用的索引

key_len

  • 实际使用索引的最大长度

ref

  • 哪些列或产量用于索引查找

rows

  • 根据统计信息预估扫描行数

filtered

  • 返回结果行数占读取行数的百分比

extra

说明
Distinct 优化distinct操作,在找到第一匹配的元祖后即停止找同样值的动作
Not exists 使用not exist优化查询
Using filesort 使用文件来排序,通常会出现在order by或groub by查询
Using index 使用覆盖索引进行查询
Using temporary 使用临时表进行处理查询,常见于排序,子查询和分组查询
Using where 使用where条件过滤数据
select tables optimized away 直接通过索引获取数据,不用访问表

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/11160.html

(0)
上一篇 2022-12-15
下一篇 2022-12-15

相关推荐

  • SQL练习——2020滴滴面试题 – Lu[亲测有效]

    SQL练习——2020滴滴面试题 – Lu[亲测有效]一、题目 题目信息:“订单信息表”记录了巴西乘客使用打车软件的信息,包括订单呼叫、应答、取消、完单时间。(滴滴2020数据分析面试题) 字段信息: order_id:订单ID,呼叫订单识别号 pass

    2023-04-14
    108
  • 数据库事务知识整理「终于解决」

    数据库事务知识整理「终于解决」什么是数据库事务? 事务,就是一系列操作的整体,其结果就是这一系列操作要么全部成功,要么全部失败。 譬如说,一个经典的例子转账。 A要转帐给B 100块钱,要经历以下步骤: 1、扣除A账户100块

    2023-06-11
    104
  • hdfs上传和下载_hdfs下载文件

    hdfs上传和下载_hdfs下载文件hdfs上传流程 首先客户端向nn请求上传文件、nn经过检查回应客户端是否可以上传、客户端得到同意后向nn请求上传第一块文件的dn、nn返回给客户端dn的地址、客户端与其中一个dn1建立连接然后dn1

    2023-05-08
    105
  • Redis 高可用之”持久化”「建议收藏」

    Redis 高可用之”持久化”「建议收藏」Redis高可用概述 在Redis中,实现高可用的技术主要包括:持久化、复制(读写分离)、哨兵、集群。 持久化: 持久化是最简单的高可用方法(有时甚至不被归为高可用手段),主要作用是数据备份,即将数据

    2022-12-30
    95
  • 如何从文本文件读入 SQL 参数[通俗易懂]

    如何从文本文件读入 SQL 参数[通俗易懂]有时我们希望把参数列表分行存储在文本文件里,执行SQL时再拼到in函数里,从而查询出符合条件的记录。 但SQL不能解析文本文件,直接拼到in函数里有困难,所以很多人先把文件导入数据库临时表,再用jo…

    2023-03-03
    112
  • Python比较运算符:大于的用法

    Python比较运算符:大于的用法Python中的大于运算符是“>”,用于比较两个数字或两个表达式的大小关系。当左侧数字大于右侧数字时,返回True,否则返回False。

    2024-03-30
    28
  • ACCESS常见错误场景

    ACCESS常见错误场景ACCESS常见错误场景 今天用access时发现好多报错的地方,emmm,比MySQL麻烦好多,有些甚至还要自己去配置环境 不吐槽了,进入正题: 报错场景一:您尝试执行不包含指定聚合函数的查询 第一

    2023-04-14
    115
  • 翻译|是否应该在 Kubernetes 上运行数据库?

    翻译|是否应该在 Kubernetes 上运行数据库?数据库如何在 Kubernetes 上运行?如果可以,哪些类型的数据库和数据最适合使用 K8s?让我们一起来看看。 Kubernetes 是用于自动部署、扩展和管理容器化应用程序的一个开源的容器编排解

    2023-06-01
    99

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注