select a.seller_id, a.seller_name, b.user_name, c.statefrom a, b, cwhere a.seller_name = b.seller_name and b.user_id = c.user_id and c.user_id = 17 and a.gmt_create BETWEEN DATE_ADD(NOW(), INTERVAL – 600 MINUTE) AND DATE_ADD(NOW(), INTERVAL 600 MINUTE)order by a.gmt_create;
查看数据量
原执行时间
原执行方案
初步优化思绪
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字段创立索引
应用复合索引消弭暂时表和排序
初步优化SQL
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改写等操作
查看优化后的执行时间和执行方案
假设优化效果不清楚,重复第四步操作
【编辑引荐】
快来看看,你正在运用的编程言语盛行排行榜!别被时代淘汰了_IT技术周刊第610期
四个全新维度,优化你的HTTP功用到极致
我们是如何将 ToB 效劳的交付才能优化75%?
每秒几十亿实时处置,阿里巴巴超大规模 Flink 集群运维揭秘_IT技术周刊第611期
两大春节抢票神器霸榜Github!再也不用担忧买不到票了_IT技术周刊第612期
(责任编辑:admin)