一次mysql的查询索引的优化

来源:互联网 发布:烟台软件开发招聘 编辑:程序博客网 时间:2024/06/05 15:04

      最近在研究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篇这样的博客都不够。



0 0