Mysql 系列 一 explan

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS AI 助手,专业版
简介: explan在数据库中的作用以及字段详解

一、那些情况需要创建索引?

1、主键自动建立唯一索引;
2、频繁作为查询条件的字段应该创建索引;
3、查询中与其他表关联的字段,外键关系建立索引;
4、频繁更新的字段不适合创建索引,因为每次更新不单单是更新记录,还会更新索引;
5、where条件李用不到的字段,不适合创建索引;
6、单键/组合索引的选择问题(在高并发下倾向创建组合索引);
7、查询中排序的字段,排序字段若通过索引去访问,将大大提高排序速度;
8、查询中统计或者分组字段;

二、Explan分析sql性能

1)、explan的作用

表的读取顺序;
数据读取操作的操作类型;
那些索引可以使用;
那些索引被实际使用;
表之间的作用;
每张表有多少行被优化器查询;

2)、explan中字段详解,以及字段作用
.id
.select_type:
值类型主要有(SIMPLE,PRIMARY,SUBQUERY,DERIVED,UNION,UNION RESULT)
.table

   显示数据是关于那张表的;

.type:

  显示查询使用了何种类型
   type值的类型:all、index、range、ref、eq_ref、const   system、NULL

  从最好到最差依次是:system>const>eq_ref>ref>range>index>ALL

possible_keys:显示可能应用子这张表的索引,一个或多个;查询涉及到的字段上若存在索引,则该索引将被列出,但不一定被查询实际使用;

.key:实际使用到的索引,如果为NULL,则没有使用索引;查询中若使用了覆盖索引,则该索引仅出现在key列表中;

.key_len:表示索引中使用的字节数,客通过该列计算,查询中使用的索引的长度。在不损失精度的情况下,长度越短越好;显示的值为索引字段的最大可能长度,并非实际使用长度,即key_len是根据表定义激素那而得,不是通过表内检索出来的;

.ref:显示索引的哪一列被使用了,如果可能的话,是一个常数。哪些列或常量被用于查找索引列上的值

.rows:rows列显示MySQL认为它执行查询时必须检查的行数。(越少越好)

Extra:包含不适合在其他列中显示,但十分重要的额外信息
(1)、Using filesort

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
网络安全 计算机视觉
【node】 npm install 报错:code 128
【node】 npm install 报错:code 128
1403 1
|
数据采集 自然语言处理 搜索推荐
ModelScope问题之模型encoder配置报错如何解决
ModelScope模型报错是指在使用ModelScope平台进行模型训练或部署时遇到的错误和问题;本合集将收集ModelScope模型报错的常见情况和排查方法,帮助用户快速定位问题并采取有效措施。
886 0
|
Java 应用服务中间件
SpringBoot:修改上传文件大小的限制+tomcat
SpringBoot:修改上传文件大小的限制+tomcat
1504 1
|
SQL 存储 JSON
MySQL执行请求报错 Error: Row size too large (>8126)
最近遇到一个业务问题,在执行一个大的业务查询时会抛出异常报错,所以今天就总结一下 Row size too large (>8126) 报错的相关问题。
|
jenkins Java Shell
使用 Docker 安装 Jenkins 并实现项目自动化部署
Jenkins 是一款开源的持续集成(DI)工具,广泛用于项目开发,能提供自动构建,测试,部署等功能。作为领先的开源自动化服务器,Jenkins 提供了数百个插件来支持构建、部署和自动化任何项目。
36516 3
使用 Docker 安装 Jenkins 并实现项目自动化部署
|
存储 分布式计算 数据可视化
ERP系统中的大数据分析与处理:驱动企业智能决策
【7月更文挑战第29天】 ERP系统中的大数据分析与处理:驱动企业智能决策
1085 0
|
存储 JSON NoSQL
解决Redis的键值前出现类似\xAC\xED\x00\x05t\x00*这样的字符序列
遇到Redis键值前出现Java序列化字符序列的问题,主要通过调整序列化策略来解决,首选 `StringRedisTemplate`或自定义序列化器来确保数据以预期的格式存储。合理的序列化策略不仅能提高数据的可读性和存储效率,还能避免潜在的安全隐患,是构建健壮Redis应用的基础之一。
1425 2
|
监控 Python
`pytest-qt` 是一个用于在 Qt 应用程序中进行 GUI 测试的 pytest 插件。
`pytest-qt` 是一个用于在 Qt 应用程序中进行 GUI 测试的 pytest 插件。
|
存储 前端开发 数据可视化
一文教会你 如何在Github中创建仓库?如何将多个项目放到一个仓库中管理?如何将本地项目上传到GitHub中?
这篇文章详细介绍了如何在GitHub上创建新仓库,以及如何将多个项目整合到一个仓库中进行管理。文章还提供了克隆仓库到本地、使用不同文件夹存放不同项目代码、以及将这些项目提交到远程服务器的步骤和方法。
一文教会你 如何在Github中创建仓库?如何将多个项目放到一个仓库中管理?如何将本地项目上传到GitHub中?
|
安全 Java API
Java 8 流库的魔法革命:Filter、Map、FlatMap 和 Optional 如何颠覆编程世界!
【8月更文挑战第29天】Java 8 的 Stream API 通过 Filter、Map、FlatMap 和 Optional 等操作,提供了高效、简洁的数据集合处理方式。Filter 用于筛选符合条件的元素;Map 对元素进行转换;FlatMap 将多个流扁平化合并;Optional 安全处理空值。这些操作结合使用,能够显著提升代码的可读性和简洁性,使数据处理更为高效和便捷。
575 0