一次mysql的查询索引的优化

本文探讨了在处理大量数据时,如何通过为MySQL表建立索引来显著提高查询效率。通过实例展示了在未使用索引的情况下,复杂查询可能带来的性能瓶颈,并详细解释了在表B和表C上建立索引后,查询速度从109秒降至不到1秒的显著改善。文章强调了索引作为数据库优化工具的关键作用,以及它们如何帮助实现性能提升。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      最近在研究mysql,看了许多资料,但都没有在大量数据中的实战,正好电脑里面还有之前做过助学网的库表(替学校做的实际项目),于是兴起准备找些东西来练手。


有如下三张表,

学生基本信息表A(31959行数据,大概有30个字段,为了简单起见,就只列出3个字段了)

create table A(
student_id bigint primary key, 
academy varchar(20),
name varchar(10)
);

贫困生申请表B(12402行数据,大概有40个字段,为了简单起见,就只列出4个字段了)

create table B(
id int primary key, 
student_id bigint, 
annual varchar(10),
info1 text
);


勤工俭学信息表B(1161行数据,大概有20个字段,为了简单起见,就只列出4个字段了)

create table C(
id int primary key, 
student_id bigint, 
annual varchar(10),
info2 text
);



现需要查询拥有申请“国家助学金”资格的学生的信息,即既有申请贫困生,又有勤工俭学的学生的信息。

语句如下:

SELECT * FROM A join B using(student_id) join C using(student_id);

结果竟然跑了109秒,这不能忍,如果是学校进行办公,那还了得!



于是在表B和表C建立索引,语句如下

alter table B add key(student_id);
alter table C add key(student_id);


然后再跑同样的查询语句,结果时间不到1s,果断整整降低了两个数量级!索引果然是个好东西!




总结:在日常的数据库查询过程中,索引是个“神器”,有效利用索引,能够轻松将查询时间降低几个数量级。其实mysql还有很多的优化手段,就单单把索引讲好讲透彻,恐怕100篇这样的博客都不够。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值