杀鸡焉用牛刀 发表于 2024-7-13 06:19:51

【MySQL】《狂飙》电视剧火了,假如步调一直狂飙,扛不住了,怎么办呢?

《狂飙》电视剧你看了吗?

咖啡干嚼不加糖,我是建工高启强。
手拿冻鱼追一起,我叫启盛你记着。
鱼摊卖鱼开箱货,杀人还得陈金默。
孟钰启兰把我亲,只玩不处叫安欣。
先亲程程后摸腿,我是莽村李雄伟。
AD钙奶来上香, 京海大佬叫徐江。
老公被埋不知情,我是大嫂陈书婷。
脚踩五菱没刹车,记着我是有田哥。
放贷不还就见红,我是刀哥唐小龙。
特产一箱接一箱,我是区长龚开疆。
金丝眼镜真斩男,我是御姐高启兰。
早饭喝粥不放糖,我是省委高玉良。
师父断送我说谎,我的名字叫李响。
一起狂飙到凌晨,我是少爷高晓晨。
交警缉毒带管电,我的名字叫杨健。
做局从来不露面,冬哥安排秘书见。
详细的可以看电视剧哈,强哥这个人物张颂文演的可以的。你以为呢?
步调“狂飙”,你担心吗?

那回到项目步调内里,假如你负责写的项目步调一直狂飙的话,怕不怕,慌不慌。
是不是要想办法办理题目,不让步调挂掉。避免题目出现,控制住成本,不让步调崩溃。
这篇文章就写一下基于MySQL的方面的性能优化处理处罚方法。掌握了MySQL性能调优总能办理一部分题目吧。
性能优化步骤

恰当创建索引的情况



[*]主键自动创建唯一索引;
[*]频繁作为查询条件的字段应该创建索引;
[*]查询中与其它表关联的字段,外键关系创建索引;
[*]单键/组合索引的选择题目, 组合索引性价比更高;
[*]查询中排序的字段,排序字段若通过索引去访问将大大提高排序速率;
[*]查询中统计或者分组字段。
不恰当创建索引的情况



[*]表记载太少;
[*]经常增删改的表或者字段;
[*]Where 条件里用不到的字段不创建索引;
[*]过滤性不好的不恰当建索引。
Explain 性能分析

利用 EXPLAIN 关键字可以模拟优化器执行 SQL 查询语句,从而知道 MySQL 是怎样处理处罚你的 SQL 语句的。
分析查询语句或是表结构的性能瓶颈。
用法: Explain +SQL 语句。

[*]执行代码如下,没有where条件
EXPLAIN SELECT * from t_im_contacts
Explain 执行后返回的信息
https://img-blog.csdnimg.cn/e16a1a5477ef4f1eb3b3b3d871c4dc67.png
以上所有效果列说明如下:
参数说明id选择标识符,id 越大优先级越高,越先被执行;select 查询的序列号,包罗一组数字,表示查询中执行 select 子句或操纵表的顺序。select_type表示查询的类型,主要是用于区别普通查询、团结查询、子查询等的复杂查询table输出效果集的表partitions匹配的分区type表示表的毗连类型,类型有很多单独说明下possible_keys表示查询时,大概利用的索引key表示实际利用的索引key_len索引字段的长度ref列与索引的比较rows大概估算的行数filtered按表条件过滤的行百分比Extra执行情况的描述和说明 id说明

   id 雷同,执行顺序由上至下
id 不同,假如是子查询,id 的序号会递增,id 值越大优先级越高,越先被执行
id 假如雷同,可以以为是一组,从上往下顺序执行;在所有组中,id 值越大,优先级越高,越先执行衍生 = DERIVED
关注点: id 号每个号码,表示一趟独立的查询。一个 sql 的查询趟数越少越好。
select_type 说明

https://img-blog.csdnimg.cn/c7355aa06c51414eb43b188ced209775.png
type字段说明

最告急的就是 type 字段,type 值类型如下:


[*]all — 扫描全表数据;
[*]index — 遍历索引;
[*]range — 索引范围查找;
[*]index_subquery — 在子查询中利用 ref;
[*]unique_subquery — 在子查询中利用 eq_ref;
[*]ref_or_null — 对 null 进行索引的优化的 ref;
[*]fulltext — 利用全文索引;
[*]ref — 利用非唯一索引查找数据;
[*]eq_ref — 在 join 查询中利用主键或唯一索引关联;
[*]const — 将一个主键放置到 where 后面作为条件查询, MySQL 优化器就能把这次查询优化转化为一个常量,怎样转化以及何时转化,这个取决于优化器,这个比 eq_ref 效率高一点。
Extra说明一下



[*]出现 null
   表示查询的列未被索引覆盖,且where筛选条件是索引的前导列,这意味着用到了索引,但是部分字段未被索引覆盖,必须通过“回表查询”来实现,性能不是很好。


[*]Using index condition
   表示查询条件中虽然出现了索引列,但是有部分条件无法利用索引,会根据能用索引的条件先搜索一遍再匹配无法利用索引的条件。


[*]Using index
   利用索引,Using index 代表表示相应的 select 操纵中利用了覆盖索引(Covering Index),避免访问了表的数据行,效率不错! 假如同时出现 using where,表明索引被用来执行索引键值的查找;假如没有同时出现 using where,表明索引只是 用来读取数据而非利用索引执行查找


[*]Using where 单独出现
   表示当前查询的字段不能被索引覆盖,所以大概会产生回表,效率略低


[*]Using where,Using index
   表示查询的列被索引覆盖,且where筛选条件是索引列前导列的一个范围,或者是索引列的非前导列。 效率比较高


[*]Using filesort
   这种情况是在利用 order by 关键字的时间,假如待排序的内容无法通过索引直接直接进行排序,mysql就有大概进行文件排序。但是由于查询次数过多的话,对于排序的效率还是有一定的影响的。
所以,根据自己的情况进行优化改进即可。你有好的建议欢迎评论区交换讨论。
让自己的步调平稳的运行。
写到末了,一直在技术路上前行…
昨天,删去;本日,夺取;明天,积极。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 【MySQL】《狂飙》电视剧火了,假如步调一直狂飙,扛不住了,怎么办呢?