mysql 非等值条件 索引_慢SQL简述与定位
慢SQL日志简述
通过命令和查看日志文件的方式直接查看mysql服务器的慢sql
参数配置
参数作用slow_query_log是否启用
slow_query_log_file日志文件
long_query_time慢sql阈值
log_slow_adimin_statements是否记录数据库管理相关的sql
long_queries_not_using_indexes是否记录未使用索引的sql
### 慢日志内容
内容描述
-----------
#Time:2020-09-27T22:27:56.343654Z日志时间
#User@Host:root@huan[127.0.0.1]id:2客户端主机
#Query_time:3.346928 Lock_time:0.000482 Rows_sent:1 Rows_examined:5003427执行时间(s), 锁时间, 返回结果行数, 查询总行数
SET timestamp=1588763242sql执行发生时间
select count(*) from poemsql内容
### 日志分析辅助工具mysqldumpslow
例如:查询最慢的前100条sql
mysqldumpslow -t 100 /var/lib/mysql/slow.log
主要功能是, 统计不同慢sql的
出现次数(Count),
执行最长时间(Time),
累计总耗费时间(Time),
等待锁的时间(Lock),
发送给客户端的行总数(Rows),
扫描的行总数(Rows),
用户以及sql语句本身(抽象了一下格式, 比如 limit 1, 20 用 limit N,N 表示).
索引概述
聚集索引(聚簇索引)
InnoDB表都有一个称为聚集索引的特殊索引(默认主键,没有则是唯一键,都没有则选择隐式的rowid键)
二级索引(非聚簇索引)
所有非聚集索引,都称为二级索引
单列索引
索引只涉及一个列
多列索引(复合索引、联合索引、组合索引)
索引涉及多个列(最多16列)
覆盖索引
它本身不是一种索引,只是查询语句所需要的列被包含在查询条件中的索引里面,直接通过索引查询出结果,不需要回表查询
如:select id from user where id < 100
查询优化器概述
查询优化器的任务是找到执行sql查询的最佳计划,是mysql数据库的一个核心功能模块。根据表、列、索引的详细信息以及sql语句中的条件,多方面来让sql高效的执行。
优化器选择出的执行效率最高的一组操作,称之为查询计划。
查询优化器优化过程:
准备阶段
补全sql(* 转 对应字段)
优化阶段
条件优化(常量传递、等值替换、移除无用条件)
例如:5=5 and a>5 改写为 a>5
(a5 and b=c and a= 5
表依赖关系分析
查看用到的ref所以索引
评估记录扫描数、成本分析
执行计划
id: MySQL Query Optimizer 选定的执行计划中查询的序列号。表示查询中执行 select 子句或操作表的顺序,id值越大优先级越高,越先被执行。id 相同,执行顺序由上至下。
select_type:查询类型,SIMPLE、PRIMARY、UNION、DEPENDENT UNION等。
table:显示这一行的数据是关于哪张表的
type:这是重要的列,显示连接使用了何种类型。从最好到最差的连接类型为const、eq_reg、ref、range、indexhe和all
possible_keys:显示可能应用在这张表中的索引。如果为空,没有可能的索引。可以为相关的域从where语句中选择一个合适的语句
key: 实际使用的索引。如果为null,则没有使用索引。很少的情况下,mysql会选择优化不足的索引。这种情况下,可以在select语句中使用
use index(indexname)来强制使用一个索引或者用ignore index(indexname)来强制mysql忽略索引
key_len:使用的索引的长度。在不损失精确性的情况下,长度越短越好
ref:显示索引的哪一列被使用了,如果可能的话,是一个常数
rows:mysql认为必须检查的用来返回请求数据的行数
extra:关于mysql如何解析查询的额外信息。
mysql 非等值条件 索引_慢SQL简述与定位相关推荐
- mysql 非等值条件 索引_mysql 索引学习--多条件等值查询,顺序不同也能应用联合索引啦...
以前学习这一块的时候,是说:假设建立了联合索引a+b,那么查询语句也一定要是这个顺序才能应用该索引. 那么实际是怎样呢,经过mysql这么多次版本升级,相信mysql已经给我们做了某些优化. 下面是我 ...
- mysql非主键索引_主键索引和非主键索引的区别
1. 什么是最左前缀原则? 以下回答全部是基于MySQL的InnoDB引擎 例如对于下面这一张表 如果我们按照 name 字段来建立索引的话,采用B+树的结构,大概的索引结构如下 如果我们要进行模糊查 ...
- mysql非主键索引_主键索引和非主键索引解析
1. 什么是最左前缀原则? 以下回答全部是基于MySQL的InnoDB引擎 例如对于下面这一张表 如果我们按照 name 字段来建立索引的话,采用B+树的结构,大概的索引结构如下 如果我们要进行模糊查 ...
- 面试mysql中怎么创建索引_阿里面试:MySQL如何设计索引更高效?
有情怀,有干货,微信搜索[三太子敖丙]关注这个不一样的程序员. 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点.资料以及我的系列文章. ...
- mysql哪些字段适合索引_(转)Mysql哪些字段适合建立索引
简单梳理如下:1) 事务支持 MyISAM不支持事务,而InnoDB支持.InnoDB的AUTOCOMMIT默认是打开的,即每条SQL语句会默认被封装成一个事务,自动提交,这样会影响速度,所以最好是把 ...
- mysql pt工具 加索引_[转]MySQL中如何为连接添加索引
SELECT * FROM tblA, tblB, tblC WHERE tblA.col1 = tblB.col1 AND tblA.col2 = tblC.col1; explain的结果如下: ...
- mysql生产环境加索引_【生产篇】_MySQL环境下如何查看基于表的索引定义
[引言] 今天中午项目组来一需求,欲在MySQL环境的某张表下创建几个BTREE索引.要创建索引,首先需要了解基表的表结构,以及已经包含的索引.Oracle的表结构大家都很熟悉,但MySQL表结构和已 ...
- mysql 主键 聚集索引_主键索引就是聚集索引吗?
这个问题很刁钻! 答案是错的. 的确在mysql数据库innodb引擎里面,主键的确就是聚集索引. 但是myisam引擎里面主键也不是聚集索引. 另外在sql server中还可以显示的指定聚集索引. ...
- mysql判断是否建立索引_判断mysql中列是否要添加索引的标准
最近再看mysql技术内部+innoDb存储引擎一书,书中第五章-索引与算法中讲到 查看表的索引信息中的一些参数含义,特作记录 show index from table_name ## 查看该表的 ...
最新文章
- 取代MybatisPlus?阿里推出了新 ORM 框架!(两者对比参考)
- 解决linux病毒导致带宽跑满的解决过程 ,可以参考参考
- WebGL 浏览器函数
- golang应用部署
- Tomcat 内存与优化篇
- Ubuntu Apache 服务之 PHP 配置
- 生成模型和判别模型对比
- 与众不同 windows phone (36) - 8.0 新的瓷贴: FlipTile, CycleTile, IconicTile
- sharepoint页面嵌入_在其他系统Iframe中显示SharePoint 页面
- freetype字体位图转距离场_关于freetype的移植和其官方demos的使用总结
- ORA-00091错误的解决方式
- apache beam入门之编码Coder相关
- 高清卫星影像查看方法
- 浏览器加载网页资源的原理
- 远程终端工具Xshell、Xftp传输工具、VMware 、CentOS7的下载、安装和使用教程(完整版)
- 使用 Bud and Go 构建全栈应用程序
- 2022江苏最新中级消防设施操作员模拟考试试题及答案
- 菜鸟学习SpringBoot——(一)构建一个简单的单体Springboot项目
- 《推荐系统实践》 第七章 推荐系统实例 读书笔记
- Moonbeam与HydraDX的集成为Polkadot带来流动性
热门文章
- python模式匹配算法_详解Python 最短匹配模式
- for循环利用可迭代对象与迭代器完成工作的本质
- 知识图谱入门知识(三)词性标注
- WSDM Cup 2020检索排序评测任务第一名经验总结
- 会议交流 | IJCKG 2021 日程表(北京时间)
- 论文浅尝 - KDD2020 | 真实世界超图的结构模式和生成模型
- 会议 | 2019 全国知识图谱与语义大会 (CCKS 2019)
- 论文浅尝 | 基于复杂查询图编码的知识库问答
- Android官方开发文档Training系列课程中文版:布局性能优化之布局复用
- 简单讲述一下Intent的传值过程