千家信息网

优化mysql sql和sql执行计划的步骤

发表于:2024-12-12 作者:千家信息网编辑
千家信息网最后更新 2024年12月12日,本文主要给大家介绍优化mysql sql和sql执行计划的步骤,文章内容都是笔者用心摘选和编辑的,具有一定的针对性,对大家的参考意义还是比较大的,下面跟笔者一起了解下优化mysql sql和sql执行
千家信息网最后更新 2024年12月12日优化mysql sql和sql执行计划的步骤

文主要给大家介绍优化mysql sql和sql执行计划的步骤,文章内容都是笔者用心摘选和编辑的,具有一定的针对性,对大家的参考意义还是比较大的,下面跟笔者一起了解下优化mysql sql和sql执行计划的步骤吧。

SQL优化

禁用SELECT *
使用SELECT COUNT(*) 统计行数
尽量少运算
尽量避免全表扫描,如果可以,在过滤列建立索引
尽量避免在WHERE子句对字段进行NULL判断
尽量避免在WHERE子句使用!= 或者<>
尽量避免在WHERE子句使用OR连接
尽量避免对字段进行表达式计算
尽量避免对字段进行函数操作
尽量避免使用不是复合索引的前缀列进行过滤连接
尽量少排序,如果可以,建立索引
尽量少JOIN
尽量用JOIN代替子查询
尽量避免在WHERE子句中使用IN,NOT IN或者HAVING,使用EXISTS,NOT EXISTS代替
尽量避免两端模糊匹配 LIKE %***%
尽量用UNION ALL代替UNION
尽量早过滤
避免类型转换
尽量批量INSERT
优先优化高并发SQL,而不是频率低的大SQL
尽可能对每一条SQL进行EXPLAIN
尽可能从全局出发

sql执行计划

在mysql命令行中,执行explain命令可以看到sql执行计划



EXPLAIN列的解释

table
显示这一行的数据是关于哪张表的。

type

ALL, index, range, ref, eq_ref, const, system, NULL

从左到右,性能从最差到最好


ALL:FULL TABLE Scan, MySQL将遍历全表以找到匹配的行。
INDEX:FULL INDEX Scan,INDEX与ALL区别为INDEX类型只遍历索引树。
RANGE:索引范围扫描,对索引的扫描开始于某一点,返回匹配值域的行,常见于BETWEEN、<、>等的查询。
ref:非唯一性索引扫描,返回匹配某个单独值的所有行。常见于使用非唯一索引即唯一索引的非唯一前缀进行的查找。
eq_ref:唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配。常见于主键或唯一索引扫描
const、system:当MySQL对查询某部分进行优化,并转换为一个常量时,使用这些类型访问。如将主键置于WHERE列表中,MySQL就能将该查询转换为一个常量。system是const类型的特例,当查询的表只有一行的情况下, 使用system。
NULL:MySQL在优化过程中分解语句,执行时甚至不用访问表或索引。

possible_keys
显示可能应用在这张表中的索引。如果为空,没有可能的索引。可以为相关的域从WHERE语句中选择一个合适的语句。

key
实际使用的索引。如果为NULL,则没有使用索引。很少的情况下,MYSQL会选择优化不足的索引。这种情况下,可以在SELECT语句中使用USE INDEX(indexname)来强制使用一个索引或者用IGNORE INDEX(indexname)来强制MYSQL忽略索引。

key_len
使用的索引的长度。在不损失精确性的情况下,长度越短越好。

ref
显示索引的哪一列被使用了,如果可能的话,是一个常数。

rows
MYSQL认为必须检查的用来返回请求数据的行数。

Extra
USING INDEX:该值表示相应的SELECT操作中使用了覆盖索引(Covering INDEX)【注:MySQL可以利用索引返回SELECT列表中的字段,而不必根据索引再次读取数据文件 包含所有满足查询需要的数据的索引称为 覆盖索引】。
USING WHERE:表示MySQL云服务器在存储引擎受到记录后进行"后过滤"(Post-filter),如果查询未能使用索引,USING WHERE的作用只是提醒我们MySQL将用WHERE子句来过滤结果集。
USING TEMPORARY:表示MySQL需要使用临时表来存储结果集,常见于排序和分组查询。
USING filesort: MySQL中无法利用索引完成的排序操作称为"文件排序"。

看完以上关于优化mysql sql和sql执行计划的步骤,很多读者朋友肯定多少有一定的了解,如需获取更多的行业知识信息 ,可以持续关注我们的行业资讯栏目的。

索引 查询 子句 字段 情况 数据 类型 语句 排序 步骤 非唯 一行 前缀 只有 命令 尽可能 常量 文件 笔者 结果 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 联想服务器系统回退 跨境电商与软件开发的压力 网络安全推荐工具 数据库订单表 开展网络安全评估 深圳护苗网络安全教育培训 派出所宣传网络安全法简报 不同网段如何连接一个服务器 化学计算服务器商家 东讯网络技术有限公司 能不能边工作边培训软件开发 魔兽世界奥尔加隆服务器 安徽在线网络技术咨询哪家好 数据库身份证什么类型 服务器管理口HDM命令行目录 互联网高科技产业受影响 健身俱乐部 软件开发 软件开发外包第三方协议 网络安全周是什么意思 传统关系型数据库书籍 英灵神殿服务器名字是哪个 基于区块链的网络安全技术 服务器倒转功率 宝马编程电脑数据库版本怎么看 服务器托管常用数据 阿里云韩国云服务器 江西微信小程序软件开发 上海口碑好的网络技术批发价 安徽高校党建软件开发系统 江苏c语言软件开发需要多少钱
0