- 原执行计划

文章插图
- 初步优化思路
- SQL中 where条件字段类型要跟表结构一致,表中user_id 为varchar(50)类型,实际SQL用的int类型,存在隐式转换,也未添加索引 。将b和c表user_id 字段改成int类型 。
- 因存在b表和c表关联,将b和c表user_id创建索引
- 因存在a表和b表关联,将a和b表seller_name字段创建索引
- 利用复合索引消除临时表和排序
alter table b modify `user_id` int(10) DEFAULT NULL;alter table c modify `user_id` int(10) DEFAULT NULL;alter table c add index `idx_user_id`(`user_id`);alter table b add index `idx_user_id_sell_name`(`user_id`,`seller_name`);alter table a add index `idx_sellname_gmt_sellid`(`gmt_create`,`seller_name`,`seller_id`);查看优化后执行时间
文章插图
查看优化后执行计划

文章插图
查看warnings信息

文章插图
继续优化alter table a modify "gmt_create" datetime DEFAULT NULL;
查看执行时间

文章插图
查看执行计划

文章插图
总结
- 查看执行计划 explain
- 如果有告警信息,查看告警信息 show warnings;
- 查看SQL涉及的表结构和索引信息
- 根据执行计划,思考可能的优化点
- 按照可能的优化点执行表结构变更、增加索引、SQL改写等操作
- 查看优化后的执行时间和执行计划
- 如果优化效果不明显,重复第四步操作
【SQL优化技巧总结,及案例分析】
推荐阅读
- 量贩式ktv装修设计技巧
- WordPress的6大图像优化插件
- 一条SQL搞定数据库设计文档
- 网站优化之前的分析工作有哪些
- 内链优化的意义有哪些呢?
- 提升网站流量技巧解析
- 企业站的SEO优化策略
- 57个用于搜索引擎优化的小技巧
- 网站优化选取网站关键词的三大原则
- 安全使用公共WiFi的4个技巧
