项目实战2—SQL优化操作1

简介: 项目实战2—SQL优化操作1

一.存储过程建表

建两张30万条数据的表以做测试用

1.user_course_info

delimiter $$ # 定义结束符

drop procedure if exists addTestDataOne; # 存储过程名叫:addTestData

create procedure addTestDataOne()

begin

declare number int;

set number = 1;

while number <= 300000 #插入N条数据

do

insert into user_course_info(id,info_id,course_id,course_name,class_id,class_name,is_delete,create_time,update_time,remark) #需要添加值得字段

values(number,concat('info',number),concat('couresdId',number),concat('courseName',number),concat('classId',number),concat('className',number),concat('0'),concat('2023-03-03'),concat('2023-03-03'),concat('备注',number)); # 对应字段的值

set number = number + 1;

end

while;

end $$

调用存储过程添加30万条数据

call addTestDataOne();

2.user_info表

delimiter $$ # 定义结束符

drop procedure if exists addTestDataTwo; # 存储过程名叫:addTestData

create procedure addTestDataTwo()

begin

declare number int;

set number = 1;

while number <= 300000 #插入N条数据

do

insert into user_info(id,ding_phone,ding_name,chaoxing_phone,chaoxing_name,is_delete,create_time,update_time,remark) #需要添加值得字段

values(number,concat('dingPhone',number),concat('dingName',number),concat('chaoxingPhone',number),concat('chaoxingName',number),concat('0'),concat('2023-03-03'),concat('2023-03-03'),concat('备注',number)); # 对应字段的值

set number = number + 1;

end

while;

end $$

调用存储过程添加30万条数据

call addTestDataTwo();

二.SQL优化方案

1.相同数据类型与不同数据类型

1.1 相同

执行SQL查询

用时0.163s

1.2 不同

user_course_info表id字段数据类型改为bigint

执行SQL查询

用时1.312s

2.group by 改用 distinct

group by:

SELECT

aui.ding_phone,

aui.ding_name,

aui.chaoxing_name,

aui.chaoxing_phone

FROM

(SELECT id FROM `user_course_info` WHERE course_id = 'couresdId99099' AND class_id = 'classId99099' AND is_delete = 0 GROUP BY id)as auci

left JOIN user_info as aui on auci.id=aui.id

distinct:

SELECT

aui.ding_phone,

aui.ding_name,

aui.chaoxing_name,

aui.chaoxing_phone

FROM

( SELECT DISTINCT id FROM `user_course_info` WHERE course_id = 'couresdId99099' AND class_id = 'classId99099' AND is_delete = 0 ) auci

LEFT JOIN user_info aui ON auci.id = aui.id

关于DISTINCT

DISTINCT的作用是查询不重复记录的条数,其智能放在查询字段的开头(放在第一个参数),并且智能在SELECT语句中使用。因为默认查询返回的就是所有结果,所以不能与all同时使用。

相关文章
|
SQL 前端开发
前端项目实战伍拾贰​react-admin+material ui-踩坑-能用工具创建表别用sql
前端项目实战伍拾贰​react-admin+material ui-踩坑-能用工具创建表别用sql
58 0
|
SQL 关系型数据库 MySQL
项目实战典型案例2——sql优化 mysql执行顺序 explain关键字进行性能分析
项目实战典型案例2——sql优化 mysql执行顺序 explain关键字进行性能分析
223 0
|
SQL 关系型数据库 MySQL
【项目实战典型案例】02.SQL语句优化
【项目实战典型案例】02.SQL语句优化
|
SQL Java 关系型数据库
项目实战21—理由Mybatis动态SQL实现复用
项目实战21—理由Mybatis动态SQL实现复用
153 0
|
SQL 分布式计算 Cloud Native
带你读《企业级云原生白皮书项目实战》——5.2.4 SQL开发参考
带你读《企业级云原生白皮书项目实战》——5.2.4 SQL开发参考
141 0
|
SQL 数据库连接 数据库
项目实战:Qt+Sql server英汉汉英电子词典
项目实战:Qt+Sql server英汉汉英电子词典
|
3月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
5月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
134 13
下一篇
DataWorks