北邮 大三下 数据库实验六 mysql版本.docx
《北邮 大三下 数据库实验六 mysql版本.docx》由会员分享,可在线阅读,更多相关《北邮 大三下 数据库实验六 mysql版本.docx(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实验报告学 院: 计算机学院 课程名称: 数据库系统 实验名称: 实验六 数据查询分析实验 班 级: 姓 名: schnee 学 号: 实验六 数据查询分析实验1. 实验目的通过对不同情况下查询语句的执行分析,巩固和加深对查询和查询优化相关理论知识的理解,提高优化数据库系统的实践能力,熟悉了解MySQL Server 5.5中查询分析器的使用,并进一步提高编写复杂查询的SQL 程序的能力。2. 实验环境操作系统:Microsoft Windows 7旗舰版 (32位)。软件:数据库版本:MySQL 5.5 3. 实验内容及过程3.1. 索引对查询的影响3.1的四个小题,由于MySQL没有聚集索
2、引与非聚集索引之分,所以无法验证,直接给出讨论结果。3.1.1. 对结果集只有一个元组的查询分三种情况进行执行(比如查询一个具体学生的信息),用查询分析器的执行步骤和结果对执行进行分析比较。3.1.1.1. 不建立索引,在student表中查询学号为“31427”的学生登录mysql后输入set profiling=1;然后执行语句,则show profiles就显示出来之前输入的命令的执行时间。如果查询细节的话则show profile for query 2; 2即语句的顺序。详见截图,则执行时间约为60毫秒:详细的select * from student where sno=31427
3、;的执行细节则为:3.1.1.2. 在学号上建立非聚集索引3.1.1.3. 在学号上建立聚集索引先解释下索引。索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录。表里面的记录数量越多,这个操作的代价就越高。如果作为搜索条件的列上已经创建了索引,MySQL无需扫描任何记录即可迅速得到目标记录所在的位置。聚集索引又叫主索引,其索引的排序方式和正文的排序方式一致。每个表只能有一个聚集索引,因为目录只能按照一种方法进行排序。用聚合索引比用不是聚合索引的主键速度快;用聚合索引比
4、用一般的主键作order by时速度快,特别是在小数据量情况下。相对应的,非聚集索引也叫辅助索引。当数据量很小的时候,用聚集索引作为排序列要比使用非聚集索引速度快得明显的多;而数据量如果很大的话,如10万以上,则二者的速度差别不明显。此外,聚集索引插入数据时速度要慢(时间花费在“物理存储的排序”上,也就是首先要找到位置然后插入)。但是查询数据比非聚集数据的速度快。由于学号是student的主键,所以根据以上分析,我们可以知道,当只有一个查询结果时,这三种方法的快慢排序为:非聚集索引 快于聚集索引 快于 无索引。(附:同学在SQL Server下测试的执行时间结果为1ms : 2ms : 21m
5、s)3.1.2. 对结果集中有多个元组的查询(例如查看某门成绩的成绩表,在此,以查看sc表的“C01”成绩为例)分类似3.1.1的三种情况进行执行比较。对于有多个元组的查询情况,差别不如3.1.1那么明显。三种情况差别都不大。不过,还是聚集索引 快于 非聚集索引 快于 无索引。(附:同学在SQL Server下测试的执行时间结果为26ms : 29ms : 32ms)3.1.3. 对查询条件为一个连续的范围的查询(例如查看学号在某个范围内的学生的选课情况,在此以查询sc表中学号在31404和31420之间的学生的学号和课程号为例)分类似3.1.1.的三种情况进行执行比较,注意系统处理的选择。对
6、于查询条件为一个连续的范围的查询的情况,非聚集索引与无索引差别不是很大,不过聚集索引明显会快很多。总体上, 还是聚集索引 快于 非聚集索引 快于 无索引。(附:同学在SQL Server下测试的执行时间结果为11ms : 26ms : 29ms)3.1.4. 索引代价。在有索引和无索引的情况下插入数据(例如在选课情况表SC 上插入数据),比较插入的执行效率。并非所有的情况索引都是会使速度变快的,比如我们往sc表里插入一条记录(001,C01,100),同学在SQL Server下测试的执行时间结果为无索引用时2ms , 但是有索引38ms!慢了非常多!3.2. 对相同查询功能不同查询语句的执行
7、比较分析3.2.1. 比较有和没有group by的查询效率并分析。(1) select avg(grade)from scgroup by cnohaving cno=C01;(2) select avg(grade)from scwhere cno=C01;运行时间如下图,我们看到有group by的用时(即查询2)为0.s,而没有group by(即查询3)的用时为0.s,也就是在此例子里没有group by会稍快一点。我们查看具体执行情况,发现差别最大的是checking permissions 0.00036 : 0.00011。3.2.2. 比较以下两个查询,重写后的查询一定比原始
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北邮 大三下 数据库实验六 mysql版本 大三 数据库 实验 mysql 版本
限制150内