🍁 作者:知识浅谈,CSDN博客专家,阿里云签约博主,InfoQ签约博主,华为云云享专家
📌 擅长领域:全栈工程师、爬虫、ACM算法
💒 公众号:知识浅谈
🔥 联系方式vx:zsqtcc
想不到吧,Mysql在项目中的优化场景这么多总结
🤞这次都给他拿下🤞
正菜来了⛳⛳⛳
🎈Mysql在项目中的优化场景,慢查询解决等
猛地一看,感觉这个优化的点就在两个方面:
一个是对sql语句进行改造,
一个是对索引进行改造,当然sql的索引的优化占一大部分,毕竟要注意的点比较多。
🍮SQL语句方面
sql语句的优化主要是像是连接语句,where语句,limit语句,select优化等这几个方面。
1️⃣连接语句:连接方式包括内连接和外连接(左连接,右连接,全连接),在不同的场景下使用不同的个连接方式,优化响应的查询效率。
2️⃣where语句:尽量保证where语句后字段有对应的索引,才能加快速率。
3️⃣limit语句:如我们常见的limit 10000,10 这个是需要取出前10010条数据的,然后截取后10条,优化方法:如果对应的字段是有序的话,我们可以使用如where id>10000 limit 0,10 这样速度就快很多了,如果是无序的话,我们可以先查询id,再根据id回表,这样也会很快 where id in(select id from table1 limit 10000,10)
4️⃣select :很多时候不推荐使用这个select*
第一:select 指出指定的字段在代码方面也容易查看业务需要的都是什么字段。
第二:select需要查询全部的字段的值,如果是根本用不到的查询出来,也增加了IO,如像是聚合索引就能索引覆盖到字段的值,如果select还要进行回表,无疑增加了IO。
第三:select*查询较多的值,在网络传输的时候也会暂用较大的带宽和传输流量,延迟传输时间。
🍮索引方面
📐第 1 步: 是否创建了索引
在查询数据的时候,where条件后边的字段是否使用到了索引,比如说添加唯一索引,普通索引,全文索引等索引结构。
📐第 2 步 :索引是否已经失效
因为有一些常见索引失效的条件,模糊查询 %在前边,参与表达式,使用内置函数,隐私转换,字符编码不同,>,<,当IN的取值范围较大时会导致索引失效等,检查是否会出现索引失效的情况。
📐第 3 步:索引是否使用恰当
索引是否使用恰当,指的是针对不同的查询,如多条件查询的时候,可以选择使用聚合索引,分辨率高的字段使用索引,具有唯一性性质的索引使用唯一索引,对修改频繁的可以使用普通索引,因为写的数据可以写到changebuffer中,使用普通索引不会有影响。
🍚总结
以上就是关于在项目中mysql做的优化,希望有所帮助。