随笔 - 502  文章 - 1 评论 - 6 阅读 - 37万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

Mysql Query Optmize: 查询优化器, SQL语句会给Query Optimize他会执行他认为最优的方式..

Mysql 常见问题

  CPU饱和,IO磁盘发生在装入数据大于内存时.

 

Explain 查询解析使用

  id, select_type, table,type,  possible_keys, key , key_len, ref, rowsExtra

id  -  表的执行顺序

  值相同: 按顺序执行

  值不同,: 值越大, 先执行. 如子查询

select_type - 数据读取操作的操作类型

SIMPLE, PRIMARY, SUBQUERY, DERIVED, UNION, UNION RESULT 主要6个表示子查询,复杂查询等

 

table - 表名

derived 虚表

 

type -  访问类型

最好的的依次:

  system > const > eq_ref > ref  > fulltext > ref_or_null> index_merge > unique_subquery > index_subquery>  range > index > all

  system > const > eq_ref > ref  > range > index > all  , 主要常用最好到ref range级别

all: 全表扫描, 从硬盘读取数据

index:   index全索引扫描,比All快.比如只找主键列值

range:  检索指定范围的行, 使用索引来选择行, 

ref:       非唯一性索引扫描, 返回所有匹配的单独行,可以找到多个复合条件的行, 属于查找和扫描的混合体, 比如复合索引2列,找其中1列..

eq_ref:  唯一性索引扫描, 表只有一条记录与之匹配, 常见主键货唯一索引, 比如部门表,ID唯一,员工表有部门id,  联合查询

const:   通过索引1次找到, 主键,唯一键 只匹配一行数据,比如通过主键查一条记录

system: 只有一条记录的表, 忽略不计

 

- 哪些索引可以使用

possible_keys:  可能使用的索引, 不一定使用

key:       真实使用的索引,若为NULL未使用索引, 若使用覆盖索引(查询的列被索引覆盖),则只出现在key中,  比如查询的字段是复合索引的顺序一样,列一样,

key_len              标识索引使用的字节数, 越少越好,  

 

rows -  哪些行被优化器查询

Extra - 包含不适合在其他列中显示的十分重要的信息

Using filesort:      (严重)文件索引, 无法利用索引完成的排序,排序按照索引顺序.

Using temporary  (严重)生成了临时表

Using index         效率不错, 索引被用来执行索引键值查找, 

Using where

Using join buffer, 使用连接缓存JOIN使用比较多

Impossible where  SQL有问题, 不可能的SQL

select tables optimezed away

distinct 

 

posted on   1161588342  阅读(131)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示