论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com技术社区
»
论坛
›
软件与程序人生
›
移动端开发
›
IOS
›
SQL 优化这么做就对了!
SQL 优化这么做就对了!
花瓣小跑
论坛元老
|
2022-8-28 10:55:52
|
显示全部楼层
|
阅读模式
楼主
主题
1934
|
帖子
1934
|
积分
5802
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
作者:狼爷
来源:
https://www.cnblogs.com/powercto/p/14410128.html
一、前言
在应用
开发
的早期,数据量少,
开发
人员
开发
功能时更重视功能上的实现,随着生产数据的增长,很多SQL语句开始暴露出性能问题,对生产的影响也越来越大,有时可能这些有问题的SQL就是整个系统性能的瓶颈。
二、SQL优化一般步骤
1、通过慢查日志等定位那些执行效率较低的SQL语句
2、explain 分析SQL的执行计划
需要重点关注type、rows、filtered、extra。
type由上至下,效率越来越高。
<ul>
ALL
全表扫描;
index
索引全扫描;
range
索引范围扫描,常用语 '2021-01-01 00:00:00' and order_status = 10[/code]范围查询还有“IN、between”。
6、不等于、不包含不能用到索引的快速搜索
可以用到ICP
SHOW PROFILES ;SHOW PROFILE FOR QUERY #{id};
复制代码
在索引上,避免使用NOT、!=、、!、NOT EXISTS、NOT IN、NOT LIKE等。
7、优化器选择不使用索引的情况
如果要求访问的数据量很小,则优化器还是会选择辅助索引,但是当访问的数据占整个表中数据的蛮大一部分时(一般是20%左右),优化器会选择通过聚集索引来查找数据。
set optimizer_trace="enabled=on";set optimizer_trace_max_mem_size=1000000;select * from information_schema.optimizer_trace;
复制代码
查询出所有未支付的订单,一般这种订单是很少的,即使建了索引,也没法使用索引。
8、复杂查询
KEY `idx_shopid_orderno` (`shop_id`,`order_no`)
复制代码
如果是统计某些数据,可能改用数仓进行解决;
如果是业务上就有那么复杂的查询,可能就不建议继续走SQL了,而是采用其他的方式进行解决,比如使用ES等进行解决。
9、asc和desc混用
select * from _t where orderno=''
复制代码
desc 和asc混用时会导致索引失效。
10、大数据
对于推送业务的数据存储,可能数据量会很大,如果在方案的选择上,最终选择存储在MySQL上,并且做7天等有效期的保存。
那么需要注意,频繁的清理数据,会照成数据碎片,需要联系DBA进行数据碎片处理。
参考资料
深入浅出MySQL:数据库
开发
、优化与管理维护(唐汉明 / 翟振兴 / 关宝军 / 王洪权)
MySQL技术内幕——InnoDB存储引擎(姜承尧)
https://dev.mysql.com/doc/refman/5.7/en/explain-output.html
https://dev.mysql.com/doc/refman/5.7/en/cost-model.html
https://www.yuque.com/docs/share/3463148b-05e9-40ce-a551-ce93a53a2c66
近期热文推荐:
1.
1,000+ 道 Java面试题及答案整理(2022最新版)
2.
劲爆!Java 协程要来了。。。
3.
Spring Boot 2.x 教程,太全了!
4.
别再写满屏的爆爆爆炸类了,试试装饰器模式,这才是优雅的方式!!
5.
《Java
开发
手册(嵩山版)》最新发布,速速下载!
觉得不错,别忘了随手点赞+转发哦!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
继续阅读请点击广告
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
花瓣小跑
论坛元老
这个人很懒什么都没写!
楼主热帖
【电脑配置】新电脑买回来怎么配置? ...
数理逻辑第4-5章
使用axios发送post请求上传文件(multip ...
应急响应(总)
最简单易懂的ios p12证书 和描述文件的 ...
【网络攻防】常见的网络攻防技术——黑 ...
使用 Mypy 检查 30 万行 Python 代码, ...
计算机网络原理(谢希仁第八版)第六章课 ...
XXE漏洞学习
gorm操作sqlite3,高并发读写如何避免 ...
标签云
国产数据库
集成商
AI
运维
CIO
存储
服务器
浏览过的版块
Java
DevOps与敏捷开发
物联网
SQL-Server
分布式数据库
开源技术
快速回复
返回顶部
返回列表