实验9 视图及索引

本文由用户“illidanwyz”分享发布 更新时间:2021-11-19 11:03:19 举报文档

以下为《实验9 视图及索引》的无排版文字预览,完整格式请下载

下载前请仔细阅读文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。

/

实验报告封面

课程名称: 数据库系统原理 课程代码: SP2006

任课老师: 张某某 实验指导老师: 张某某

实验报告名称: 实验9 视图及索引

学生姓名:

学号:

教学班:

递交日期:

签收人:

我申明,本报告内的实验已按要求完成,报告完全是由我个人完成,并没有抄袭行为。我已经保留了这份实验报告的副本。

申明人(签名):

实验报告评语与评分:

评阅老师签名:

一、实验名称: 索引

二、实验日期: 年 月 日

三、实验目的:

掌握MySQL索引的创建及使用;

四、实验用的仪器和材料:

硬件:PC电脑一台;

配置:内存,2G及以上 硬盘250G及以上

软件环境:操作系统 windows7以上

数据库环境:MySQL5.7或MySQL8.0.20

五、实验步骤和方法

【案例场景】:

图书管理系统数据库中所存放的数据随着时间的推移越来越多,而读者经常使用图书的名称对图书进行查询,发现查询速度越来越慢。此时图书管理系统管理者可以通过对图书表中的图书名称字段创建索引,来提高读者通过图书名称查询书籍的速度。

【实验目的】

理解索引的作用;

掌握创建索引的语句。

【相关知识点】

1、索引的概念及作用。

MySQL访问数据可以通过全表扫描的方式,也可以通过索引的方式。索引是从数据库中获取数据的最高效方式之一。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。索引实际上就是记录的关键字与其相应地址的对应表。也就是说,数据库中的索引是一个表中所包含的值的列表,其中注明了表中包含各个值的行所在的存储位置。通过索引可大大提高查询速度。在基本表上可以建立一个或多个索引。

只有在select查询语句中当where查询条件或者排序或者查询所涉及到的字段创建了索引,才能使用该索引提高查询速度。如果存在查询提速质疑,可以通过EXPLAIN命令查看优化器选择的执行计划,看是否使用到索引,如果对优化器选择的执行计划不满意,可以使用优化器提供的提示(hint)来控制最终的执行计划,强制使用索引。

MySQL的索引主要包括普通索引、唯一性索引、主键索引、全文索引、复合索引、空间索引等索引。

带索引的表在数据库中会占据更多的空间。经常有插入和删除操作的数据量少的小型表也最好不要创建索引,对这些插入和删除操作的索引维护可能比扫描表空间消耗更多的时间。而且不要对大型字段进行索引,这样占用的空间比较大。

数据表中由于进行插入更新数据等操作,会使索引产生碎片,查询速度降低,因而需要对索引进行维护。

通过MySQL语句创建索引

创建索引其语法格式如下:

CREATE [UNIQUE | FULLTEXT | SPATIAL]

INDEX 索引名 [索引类型] ON 表名 ( 列名 [(长度)] [ASC | DESC])

UNIQUE表示唯一索引,可选; FULLTEXT 表示全文索引,可选;SPATIAL表示空间索引,可选;以上三种都不写,代表创建普通索引。当多个字段经常同时作为查询条件,也可以将这几个字段创建一个复合索引,依次写在括号的列名中。升序ASC也可以省略不写,但降序DESC必须要写。

3、通过MySQL语句删除索引

索引的增多,会增加系统在数据更新时花费在维护索引的时间。这时,应该删除一些不必要的索引。删除索引的语法格式如下:

Drop index < 索引名>?on 数据表名

示例:

1、使用MySQL语句创建索引

【例7-1 】为书籍表BookInfo的书名Bookname字段创建普通索引IDX_BOOKNAME,IDX_BOOKNAME根据升序排序。语句如下,操作如下图7-1所示。

create index IDX_BOOKNAME on BookInfo(Bookname asc);

注意:创建索引默认是升序排序,asc可以省略不写,但降序desc不能省略。

2、使用MySQL语句查看表中所有的索引

MySQL中查看表中所有索引的语句语法如下:

show index from table_name [from db_name];

其中,table_name是要查询索引的表名,db_name是数据库名。

【例7-3】查询BookInfo表中创建的索引情况,语句如下,操作如下图7-3所示。

show index from bookinfo;

Show index语句会返回表索引信息,包含以下字段:

(1)Table:表名

(2)Non_unique:索引能不能包括重复值,不能则为0,能则为1。

(3)Key_name:索引名称,如果名字相同则表明是同一个索引,而并不是重复,有可能是复合索引。

(4)Seq_in_index:索引中的列序列号,从1开始。

(5)Column_name:创建索引的列名。

(6)Collation:列以什么方式存储在索引中。在MySQL SHOW INDEX语法中,有值’A’(升序)或NULL(无分类)。

(7)Cardinality:基数的意思,表示索引中唯一值的数目的估计值。基数根据被存储为整数的统计数据来计数,所以即使对于小型表,该值也没有必要是精确的。基数越大,当进行联合时,MySQL使用该索引的机会就越大。

(8)Sub_part:前置索引的意思,如果列只是被部分地编入索引,则为被编入索引的字符的数目。如果整列被编入索引,则为NULL。

(9)Packed:指示关键字如何被压缩。如果没有被压缩,则为NULL。压缩一般包括压缩传输协议、压缩列解决方案和压缩表解决方案。

(10)Null:如果列含有NULL,则含有YES。如果没有,则该列含有NO。

(11)Index_type:索引类型,Mysql目前常用索引类型包括:FULLTEXT,HASH,BTREE,RTREE。????

??①FULLTEXT

??即为全文索引,目前只有MyISAM引擎支持。其可以在CREATE TABLE ,ALTER TABLE ,CREATE INDEX 使用,不过目前只有 CHAR、VARCHAR ,TEXT 列上可以创建全文索引。全文索引并不是和MyISAM一起诞生的,它的出现是为了解决WHERE name &#20869;&#23481;&#36807;&#38271;&#65292;&#20165;&#23637;&#31034;&#22836;&#37096;&#21644;&#23614;&#37096;&#37096;&#20998;&#25991;&#23383;&#39044;&#35272;&#65292;&#20840;&#25991;&#35831;&#26597;&#30475;&#22270;&#29255;&#39044;&#35272;&#12290; 执行计划,说明查询操作的访问类型且是否使用索引。

查询ygxx(员工信息)表zw(职务)为主管的员工姓名,并查看其执行计划,说明查询操作的访问类型且是否使用索引。

查询员工信息表中姓名姓刘的,且所属部门不在业务部门的员工编号、员工姓名及所属部门编号,并查看其执行计划,说明查询操作的访问类型且是否使用索引。

删除spxx(商品信息)表中的index_spmc索引。

六、数据记录和计算:指从实验中测到的数据以及计算结果。

七、实验结果或结论:即根据实验过程中所见到的现象和测得的数据,作出结论。

八、备注或说明:可写上实验成功或失败的原因,实验后的心得体会、建议等。

九、引用参考文献:

&#91;&#25991;&#31456;&#23614;&#37096;&#26368;&#21518;300&#23383;&#20869;&#23481;&#21040;&#27492;&#32467;&#26463;&#44;&#20013;&#38388;&#37096;&#20998;&#20869;&#23481;&#35831;&#26597;&#30475;&#24213;&#19979;&#30340;&#22270;&#29255;&#39044;&#35272;&#93;请点击下方选择您需要的文档下载。

  1. 实验训练1在MySQL中创建数据库和表作业(1)
  2. 理化生实验室管理规则及制度
  3. MYSQL测试题
  4. Linux搭建测试环境总结
  5. 数据库性能测试
  6. Java连接MYSQL数据库的详细步骤
  7. MySQL5.7.21安装教程
  8. 【作业】《MySQL数据库应用》形考任务(复习资料)
  9. Mysql题目
  10. 1.2 MySQL安装与配置
  11. R语言数据源配置

以上为《实验9 视图及索引》的无排版文字预览,完整格式请下载

下载前请仔细阅读上面文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。

图片预览