第9章索引电子课件 MySQL数据库管理与应用.pptx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《第9章索引电子课件 MySQL数据库管理与应用.pptx》由会员分享,可在线阅读,更多相关《第9章索引电子课件 MySQL数据库管理与应用.pptx(31页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第9章索引电子课件 MySQL数据库管理与应用第9章 索引主要内容9.1 索引概述9.2 创建索引9.3 查看索引9.4 删除索引9.5 使用EXPLAIN进行索引分析9.6 本章小结9.1 索引概述数据库应用系统中,数据查询及处理速度是衡量系统性能的重要标准,如何提高数据库的性能是数据库设计时需要重点考虑的问题,利用索引来提高数据查询速度是最常用的一种性能优化方法。9.1 索引概述9.1.1 索引的概念索引是对数据表中一列或多列的值进行排序的一种结构。索引就像图书的目录一样用于快速查找需要的数据,提升数据库的查询性能。在一个数据表中查找特定的记录也可以采取两种方法:一种是全表扫描,从第一行开
2、始一一查看表中的每一行数据,与查询条件进行对比,返回满足条件的记录;另一种方法是通过对表中的数据创建索引,先在索引中找到符合查询条件的索引值,然后通过索引值对应的位置快速找到表中的记录。当表中的数据很多的时候,全表扫描的效率很低,而如果合理地创建了索引,就可以利用索引避免全表扫描从而有效提高查询效率。9.1 索引概述9.1.1 索引的概念数据库中索引的作用主要体现在以下几个方面:l索引可以提高查询的速度,这是创建索引的主要原因;l通过创建唯一索引,可以保证表中每一行数据的唯一性;l对有参照关系的父表和子表进行连接查询时,索引可以加速表与表之间的连接;l使用GROUP BY和ORDER BY子句
3、进行查询时,索引可以显著减少分组和排序的时间。9.1 索引概述9.1.2 MySQL索引的分类1普通索引和唯一索引l普通索引是最基本的索引类型,创建普通索引时对于索引列的数据类型和值是否唯一没有限制。l唯一索引要求索引列的值必须唯一,但允许有空值(除非列的定义中有NOT NULL)。主键是一种特殊的唯一索引,不允许有空值。2单列索引和组合索引l可以在表的单个列上创建索引,称为单列索引。l也可以在表的多个列的组合上创建索引,称为组合索引、复合索引或多列索引。如果创建的是组合索引,只有查询条件中用到了索引中的第一个列才会使用该索引。9.1 索引概述9.1.2 MySQL索引的分类3前缀索引lMyS
4、QL中,对于字符串列(数据类型为CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT)可以创建只使用列值的前导部分的索引,使用col_name(length)语法指定索引前缀长度,前缀限制以字节为单位。l使用列前缀索引可以使索引文件小得多,从而节省大量磁盘空间,还可能加快插入操作。4函数索引lMySQL 8.0.13及更高版本提供了函数索引,可以对表达式的值进行索引,又称为表达式索引。9.1 索引概述9.1.2 MySQL索引的分类5全文索引lMySQL中使用参数FULLTEXT设置索引为全文索引。l全文索引基于文本的列(数据类型为CHAR、VARCHAR或TEXT)
5、上创建,以加快对这些列中数据的查询和DML操作。6空间索引lMySQL中使用参数SPATIAL设置索引为空间索引。l空间索引只能建立在空间数据类型的列上,提高系统查询空间数据的效率。空间索引中的列必须声明为NOT NULL。9.1 索引概述9.1.2 MySQL索引的分类7聚集索引和辅助索引l聚集索引是指索引项的排序方式和表中数据记录排序方式一致的索引,每张表只能有一个聚集索引,聚集索引的叶子节点存储了所有的行数据。l聚集索引对表中数据重新组织以按照一个或多个列的值排序。由于聚集索引的叶子节点存储了表中的所有数据,索引搜索直接指向包含行数据的页面,所以使用聚集索引查询数据通常要比使用非聚集索引
6、快。9.1 索引概述9.1.2 MySQL索引的分类7聚集索引和辅助索引l每个InnoDB表都必须有一个聚集索引:u如果表上定义了主键,那么主键就作为聚集索引;u如果表上没有定义了主键,那么该表的第一个唯一非空索引被作为聚集索引;u如果表上没有主键也没有合适的唯一索引,InnoDB会在包含行ID值的合成列上生成一个名为GEN_CLUST_index的隐藏聚集索引。行ID是一个6字节的字段,随着新行的插入而单调增加。因此,按行ID排序实际上是按插入顺序排列。9.1 索引概述9.1.2 MySQL索引的分类7聚集索引和辅助索引l聚集索引以外的索引称为辅助索引(二级索引、次索引)。l在InnoDB中
7、,辅助索引中的每条数据都包含该行的聚集索引值(通常为主键值),以及该辅助索引中的列值。lInnoDB使用此聚集索引值搜索聚集索引中的行。如果主键较长,则辅助索引会占用更多空间,因此主键较短是有利的。9.1 索引概述9.1.3 索引的设计原则为查询条件中经常用到的并且重复值较少的列上创建索引以便提高查询效率,重复值较多的列无须创建索引。考虑为经常作为排序依据、分组依据的列创建索引以便提高排序和分组的效率。对于取值有唯一性要求的列创建唯一索引,既保证数据的唯一性又能提高查询速度。创建组合索引的时候要注意索引中列的顺序。9.1 索引概述9.1.3 索引的设计原则索引并不是越多越好,索引太多不仅占用过
8、多的磁盘空间,还会降低INSERT、UPDATE和DELETE的执行速度。数据较少的表最好不要创建索引,因为数据量少,使用索引进行查询的时间相对全表扫描的时间优化效果很小,而索引维护和更新还会带来更多的开销。避免对经常更新的表创建多的索引。9.2 创建索引9.2.1 使用CREATE TABLE语句创建索引语法格式:CREATE TEMPORARY TABLE IF NOT EXISTS tbl_name(column_definition,.,FULLTEXT|SPATIAL|UNIQUE INDEX|KEY index_name(col_name(length)|(expr)ASC|DES
9、C,.)9.2 创建索引9.2.1 使用CREATE TABLE语句创建索引说明:lFULLTEXT|SPATIAL|UNIQUE:可选项,分别表示全文索引、空间索引和唯一索引;lINDEX|KEY:二选一,作用相同;lindex_name:要创建的索引的名称,如果省略,MySQL默认用列名col_name作为索引名称;lcol_name(length):索引包含的列的名称和长度,length为可选参数且只有字符串类型的列才可以指定长度;l(expr):函数索引对应的表达式;lASC|DESC:索引值的排序方式,ASC表示升序,默认值,DESC表示降序。9.2 创建索引9.2.1 使用CREA
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第9章索引电子课件 MySQL数据库管理与应用 索引 电子 课件 MySQL 数据库 管理 应用
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内