(中职)MySQL 8.0数据库管理与应用第4章教学课件().pptx
《(中职)MySQL 8.0数据库管理与应用第4章教学课件().pptx》由会员分享,可在线阅读,更多相关《(中职)MySQL 8.0数据库管理与应用第4章教学课件().pptx(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、(中职)MySQL 8.0 数据库管理与应用第4章教学课件(工信版)第4章 索引与视图4.1.1 索引的概念在关系型数据库中,索引是一种对表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或多列的值的集合与指向表中标识这些值的数据页的逻辑指针列表。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需要的内容。索引提供指向存储在表的指定列中的数据值的指针,并且根据指定的排序顺序对这些指针进行排序。查询数据库时可以通过索引找到特定值,然后跟随指针找到包含该值的行。这样可以使对应于表的SQL语句执行得更快,可以快速访问数据库表中的特定信息。当表中包含大量记录时,从表中查询数据通常有以
2、下两种方式。p 全表搜索,即从表取出所有的记录,并与查询条件逐一进行对比,然后返回满足条件的记录,这样做会消耗大量系统时间,并造成大量磁盘I/O操作。p 事先在表中基于一列或多表创建索引,然后在索引中找到符合查询条件的索引值,最后通过保存在索引中的行标识(相当于页码)快速找到表中对应的记录。使用MySQL数据库时也不是总要通过索引来优化查询。使用索引固然可以提高检索数据的速度,但创建和维护索引需要耗费一定的时间,而且存储索引也需要占用一定的磁盘空间。索引可以提高查询数据的速度,但也会影响插入数据的操作,这是因为向有索引的表中插入记录时,这些记录会按索引进行排序。4.1 索引概述4.1.2 索引
3、的作用在数据库中创建索引主要有以下作用。p 快速读取数据。p 保证数据记录的唯一性。p 实现表与表之间的参照完整性。p 在SELECT语句中使用GROUP BY、ORDER BY子句进行数据查询时,通过索引可以缩短分组和排序的时间。在MySQL中,对所有数据类型的列都可以创建索引,但使用时需要注意以下几点。p 一个表中最多可以有16个索引,最大索引长度为256字节。p 对于CHAR和VARCHAR类型的列可以索引列的前缀。这样,索引的速度更快,并且比索引整个列所占用的空间要少。p 可以在多个列上创建索引,索引列最多可以由15个列组成。p 只有当表使用InnoDB、BDB或MyISAM存储引擎时
4、,才能向具有NULL、TEXT或BLOB的列添加索引。4.1 索引概述4.1.3 索引的分类在MySQL中,大多数索引都是以B-树方式存储的,这种方式构建为多个节点的一棵树。顶部的节点为索引的起始点,称为根。每个节点中包含索引列的几个值,节点中的每个值指向另一个节点,或者指向表中的一行,一个节点中的值必须是有序排列的。指向一行的节点称为叶子页。叶子页本身也是相互连接的,一个叶子页包含一个指针,该指针指向下一组。索引中的节点是存储在文件中的。在MySQL中,一个表中的索引都保存在同一个索引文件中。如果在表添加或删除一行,或者更新表中的值,MySQL会自动地更新索引,因此索引始终与表的内容保持一致
5、。以B-树方式存储的索引有以下几种主要类型。p 普通索引(INDEX):这是最基本的数据类型,它没有唯一性之类的限制,创建普通索引时使用关键字INDEX。p 唯一索引(UNIQUE):这种索引与普通索引基本相同,所不同的是,索引列的值不能重复,即必须是唯一的。创建唯一索引时使用关键字UNIQUE。p 主键(PRIMARY KEY):这也是一种唯一索引,但一个表只能有一个主键。主键通常是在创建表时设置,也可以通过修改表来设置主键。创建主键时使用关键字PRIMARY KEY。p 全文索引(FULLTEXT):在定义全文索引的列上支持值的全文查找,允许在这些索引列中插入重复值和空值。全文索引只能在T
6、EXT、CHAR或VARCHAR类型的列上创建,并且只能在MyISAM表中创建。全文索引可以在创建表或修改表时创建。p 空间索引(SPATIAL):这是在MyISAM表的空间数据类型的字段上建立的索引。MySQL支持4种空间数据类型。创建空间索引时要使用SPATIAL关键字进行扩展。4.1 索引概述4.1.4 索引的设计原则p 索引并非越多越好,一个表中如有大量的索引,不仅占用磁盘空间,而且会影响数据增删改操作的性能,因为当表中数据更改时索引也会进行调整和更新。p 避免对经常更新的表设置过多的索引,并且索引中的列尽可能少。对于经常查询的字段应创建索引,但要避免添加不必要的字段。p 数据量小的表
7、最好不要索引,由于数据量小,查询花费的时间可能比遍历索引的时间还要短,索引可能不会产生优化效果。p 在条件表达式中经常用到的不同值较多的列上创建索引,在不同值很少的列上不要创建索引。p 当唯一性是某种数据本身的特征时应创建唯一索引,使用唯一索引可以保证定义的列的数据完整性,从而提高查询速度。p 在频繁进行排序或分组的列上创建索引,如果要排序的列有多个,可考虑在这些列上创建组合索引。4.1 索引概述4.2.1 创建表时创建索引使用CREATE TABLE语句创建表时可以直接包含索引的定义:CREATE TEMPORARY TABLE IF NOT EXISTS 表名(列定义,.|索引定义)表选项
8、索引定义:CONSTRAINT 字符串 PRIMARY KEY 索引类型(索引列,.)/*主键*/|INDEX|KEY 索引名 索引类型(索引列,.)/*普通索引*/|CONSTRAINT 字符串 UNIQUE INDEX|KEY/*唯一性索引*/索引名 索引类型(索引列,.)|FULLTEXT|SPATIAL INDEX|KEY 索引名(索引列,.)/*全文索引*/|CONSTRAINT 字符串 FOREIGN KEY/*外键*/索引名(列名,.)引用定义索引类型:USING BTREE|HASH索引列:列名(长度)ASC|DESC4.2 创建索引4.2.2 使用ALTER TABLE创建索
9、引对于已经存在的表,可以使用ALTER TABLE语句在表中指定的列上创建索引:ALTER TABLE 表名.|ADD INDEX|KEY 索引名/*添加普通索引*/索引类型(索引列,.)索引选项.|ADD CONSTRAINT 字符串 PRIMARY KEY/*添加主键*/索引类型(索引列,.)索引选项.|ADD CONSTRAINT 字符串 UNIQUE INDEX|KEY 索引名/*添加唯一性索引*/索引类型(索引列,.)索引选项.|ADD FULLTEXT INDEX|KEY 索引名/*添加全文索引*/(索引列,.)索引选项.|ADD SPATIAL INDEX|KEY 索引名/*添加
10、空间索引*/(索引列,.)索引选项.|ADD CONSTRAINT 字符串/*添加外键*/FOREIGN KEY 索引名(列名,.)引用定义|DISABLE|ENABLE KEYS4.2 创建索引4.2.3 使用CREATE INDEX创建索引使用CREATE INDEX语句可以在现有的表中创建索引:CREATE UNIQUE|FULLTEXT|SPATIAL INDEX 索引名索引类型ON 表名(索引列,.)索引类型:USING BTREE|HASH索引列:列名(长度)ASC|DESC关键字UNIQUE用于创建唯一性索引,FULLTEXT用于创建全文索引,SPATIAL用于创建空间索引。使用
11、CREATE INDEX语句不能创建主键。索引名表示索引的名称,在一个表中索引名必须是唯一的。索引类型为BTREE或HASH,只有部分存储引擎可以在创建索引时指定索引的类型。索引列可以是一个或多个,使用格式为(索引列1,索引列2,.)的列清单可以创建出一个多列索引。对于CHAR和VARCHAR列,只用一列的一部分就可以创建索引。创建索引时,使用列名(长度)格式可以对前缀编制索引。前缀包括每列值前面的部分字符。BLOB和TEXT列也可以编制索引,但是必须给出前缀长度。4.2 创建索引4.2.4 查看索引信息使用SHOW INDEX返回表中的索引信息:SHOW EXTENDED INDEX|IND
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中职MySQL 8.0数据库管理与应用第4章教学课件 MySQL 8.0 数据库 管理 应用 教学 课件
限制150内