【IT老齐044】慢SQL优化

【IT老齐044】慢SQL优化

表结构

CREATE TABLE `a`(
`id` int(11) NOT NULL AUTO_INCREMENT,
`seller_id` bigint(20) DEFAULT NULL,
`seller_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
`gmt_create` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`)
)ENGINE=InnoDB AUTO_INCREMENT=32744 DEFAULT CHARSET=utf8;

CREATE TABLE `b`(
`id` int(11) NOT NULL AUTO_INCREMENT,
`seller_name` varchar(100) DEFAULT NULL.
`user_id` varchar(50) DEFAULT NULL,
`user_name` varchar(100) DEFAULT NULL,
`sales` bigint(20) DEFAULT NULL,
`gmt_create` varchar(3) DEFAULT NULL,
PRIMARY KEY (`id`)
)ENGINE=InnoDB AUTO INCREMENT=32744 DEFAULT CHARSET=utf8;

CREATE TABLE `c`(
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` varchar(50) DEFAULT NULL,
`order` id varchar(1ee) DEFAULT NULL
`state` bigint(20) DEFAULT NULL,
`gmt_create` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`)
)ENGINE=InnoDB AUTO INCREMENT=458731 DEFAULT CHARSET=utf8;

待优化SQL

select a.seller_id,a.seller_name,b.user_name,c.state
from a,b,c
where
a.seller_name=b.seller_name
and b.user id=c.user_id and cuser_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;

优化过程

首次执行计划

1710338666265

选取驱动表

1710338710036

创建索引

1710338763244

二次执行计划

1710338856713

详细执行计划

1710338928882

分析

1710338986140

修改表结构

alter table a modify column gmt_create datetime;
alter table a modify column seller_name varchar(100)
alter table c modify column user_id bigint;

修改结果

1710339203357

posted @ 2024-03-14 19:59  Faetbwac  阅读(43)  评论(0)    收藏  举报