前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >1100万大表11秒SQL优化

1100万大表11秒SQL优化

原创
作者头像
疯狂的KK
发布2023-06-30 15:10:43
1320
发布2023-06-30 15:10:43
举报
文章被收录于专栏:Java项目实战Java项目实战

时间:上周六刚刚从外面回来,报出生产数据慢SQL开始优化

代码语言:javascript
复制
select t.x te.xfrom o_detail tleft join p_detail teon t.A = te.A and t.B = te.Band t.C = te.C and t.D = te.Dwhere t.A = '' and t.B = ''and te.C = '' and t.D = 0group by t.B,t.C,te.X,te.id,te.Y

分析执行计划

图片
图片

因为te表未用到索引造成全表扫描

大表总数据条数

图片
图片

那就看看为什么没走索引 怎么才能走索引  业务能不能优化 影不影响主数据?

分析各表在ABC字段均建立了索引或者覆合索引,唯独D字段未建立索引,那么是否D字段应该建索引呢?先强制走te表索引或者覆合索引

效果显著

图片
图片

但是现在在模拟生产数据后te表仍然无法走任何索引

思路一:

查询t表,te表,全部索引

show index from t

show index from te

字段索引都有为什么不走?索引顺序正确啊,唯独没有D索引

强制走索引是否能提高效率?

是否覆盖索引优于普通索引?

优化计划1

将关联条件去掉,改为group by分组条件  走索引

图片
图片

but  结果集不符合场景数量

提出想法:能不能为了索引  再用程序把商品去重呢,被否定

优化计划二

将重复的结果集去重,结果集正确,且走索引时间优化效果显著

在兴奋中带着成果验证后上线了

周一暴雷,商品结果正确,数量正确,但是在某一字段未进行筛选导致结果明细错误

最终还是采用去掉D字段,程序汇总过滤

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
TDSQL MySQL 版
TDSQL MySQL 版(TDSQL for MySQL)是腾讯打造的一款分布式数据库产品,具备强一致高可用、全球部署架构、分布式水平扩展、高性能、企业级安全等特性,同时提供智能 DBA、自动化运营、监控告警等配套设施,为客户提供完整的分布式数据库解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档