MySQL数据库实验:索引使用效果测试与性能分析

需积分: 0 1 下载量 145 浏览量 更新于2024-08-04 收藏 700KB DOCX 举报
数据库实验报告 - 索引的使用效果测试 在本实验中,我们将探讨数据库索引的使用效果,并对其进行测试。实验环境使用 MySQL Workbench 8.0 CE,实验内容包括创建表test、插入大量记录、测试索引的使用效果等。 一、实验环境 在本实验中,我们使用 MySQL Workbench 8.0 CE 作为实验环境,该环境提供了一个功能强大且易用的数据库管理系统。 二、实验内容与完成情况 ### 创建表test 在实验中,我们首先创建一个名为test的表,该表具有六个字段:id、rq、srq、hh、mm、ss和num,其中id为主键。创建表的SQL语句如下: ```sql use jxgl; create table test ( id int unique auto_increment, rq datetime null, srq varchar(20) null, hh smallint null, mm smallint null, ss smallint null, num numeric(12,3) null, primary key (id) ) engine=MyISAM auto_increment=1; ``` ### 插入大量记录 为了测试索引的使用效果,我们需要插入大量记录到test表中。在本实验中,我们使用存储过程p1来生成表中数据。存储过程的SQL语句如下: ```sql delimiter // create procedure p1() begin set @i = 1; while @i <= 80000 do insert into test (rq, srq, hh, mm, ss, num) values (now(), now(), hour(now()), minute(now()), second(now()), rand(@i) * 100); set @i = @i + 1; end while; end// ``` 然后,我们调用存储过程p1()来生成表中数据: ```sql delimiter; call p1(); ``` ### 查看运行结果 为了查看生成的表中数据,我们需要设置查询的limit值,因为默认情况下,select语句的查询结果仅显示前1000条记录。我们需要在Edit->Preferences中设置limit值,然后执行下述语句来查看结果: ```sql select * from jxgl.test; ``` ### 未建索引时的操作 在未建索引的情况下,我们可以按照以下步骤操作: 1. 单记录插入:约30ms(该毫秒数是在特定环境下得出的,只做参考)。 ```sql select @i := max(id) from test; insert into test (rq, srq, hh, mm, ss, num) values (now(), now(), hour(now()), minute(now()), second(now()), rand(@i) * 100); ``` 运行时间为0ms。 2. 查询所有记录,按id排序:约157ms。 ```sql select * from test order by id; ``` 在未建索引的情况下,查询所有记录需要157ms的时间。 ### 结果分析 通过实验,我们可以看到,在未建索引的情况下,查询所有记录需要较长的时间,而在建索引的情况下,查询时间将大大缩短。这表明,索引的使用可以提高数据库的查询效率。 本实验证明了索引的使用可以提高数据库的查询效率,并且可以减少查询时间。因此,在实际应用中,使用索引可以提高数据库的性能。