内容正文:
专题八 索引
数据库原理与应用技术-MySQL
专题复习讲练测
河北科学技术出版社
掌握国家标准《机械制图》中有关图幅、比例、字体图线等基本规定。
考纲要求
一
(六)索引
1.掌握表的索引操作;
2.掌握普通索引、唯一性索引、主键索引、聚簇索引和全文索引的概念;
3.掌握单列索引、组合索引的概念;
4.掌握创建表时创建索引的语句:CREATE TABLE CONSTRAINT index_ name;
5.掌握在已经建立的表中创建索引的语句:CREATE [UNIQE] INDEX index_ name;
6.掌握修改数据表结构同时为数据表添加索引的语句:ALTER TABLE … ADD[UNIQUE|FULLTEXT][INDEX|KEY] index_ name;
掌握删除索引的语句:DROP INDEX、ALTER TABLE…DROP INDEX。
知识点梳理
二
索引
索引也称作“键 (key)”, 是存储引擎用于快速查找记录的一种数据结构,用来快速查询数据库表中的特定记录。
➽索引是MySQL中的重要对象,是数据库实现数据快速定位和提高数据访问效率的关键技术。
➽在MySQL中,所有数据类型都可以被索引。
知识点梳理
二
索引的分类
索引作为一种特殊的数据结构,由MySQL 的存储引擎实现,不同存储引擎支持的索引 类型不同。
➽根据表中列的特性,逻辑上将索引分为主键索引和辅助索引两类。
知识点梳理
二
主键索引
主键索引是由PRIMARY KEY 约束定义的一种特殊的唯一性索引,用于根据主键自身的唯 一性标识每条记录,防止添加主键索引的字段值重复或为NULL。
➽InnoDB存储引擎中数据的保 存顺序与主键索引的顺序一致,这类索引也被称为聚族索引, 一张表只能有一个聚族索引。
知识点梳理
二
辅助索引
从性能来说,主键索引的性能相对来说最好,但查询优化更多的是对辅助索引进行建立和维护。
➽常用的辅助索引
索引名称 说明
普通索引 普通索引是 MySQL 中的基本索引,允许在定义索引的列中插入重复值和空值
唯一索引 索引列的值必须唯一,但允许有空值
全文索引 一种特殊类型的索引,查找的是文本中的关键词,而非直接比较索引中的值。可在 char、varchar 或者 text 类型的列上创建
空间索引 定义在空间数据类型上的索引,索引字段不能为空
知识点梳理
二
辅助索引
根据创建索引的字段个数,可以将它们分为单列索引和复合索引。
➽单列索引是指在表的 单个字段上创建索引;
➽复合索引则是在表的多个字段上创建一个索引且只有在查询条件中 使用了这些字段的左边字段时,该索引才会被使用。
知识点梳理
二
创建索引
CREATE INDEX语句
➽
CREATE[UNIQUE|FULLTEXTISPATIAL]INDEX 索引名 ON 表名(字段名[(长 度)] [ASC|DESC]);
(1)索引名是索引的名称,在表中索引名称必须唯一。
(2)字段名表示索引创建的列名,可以是多列;长度表示在字段左边多少个字符上创建索引。
(3)UNIQUE 表示唯一索引;FULLTEXT表示全文索引;SPATIAL表示空间索引
(4)ASCIDESC 分别表示升序排列和降序排列。
(5)CREATE INDEX语句不能创建主键索引。
知识点梳理
二
创建索引
CREATE TABLE语句
➽CREATE TABLE 表名(
字段1 数据类型,
字段2 数据类型,
[UNIQUE|FULLTEXT|SPATIAL]INDEX|KEY
索引名(字段名[(长度)] [ASC|DESC])[VISIBLE|INVISIBLE]
);
(1)INDEX 和KEY表示索引关键字,只选其一即可。
(2)VISIBLEIINVISIBLE: 标识索引的可见性。 VISIBLE为可见,是缺省该项时的默认 值。当创建索引时设置为INVISIBLE,则表示该索引为不可见索引,在数据查询时,优化器 会 忽 略 不 可 见 索 引 。
知识点梳理
二
创建索引
ALTER TABLE语句
➽ALTER TABLE 表 名
ADD [UNIQUE|FULLTEXT|SPATIAL][INDEX|KEY] 索引名(字段名[(长度)] [ASC|DESC]);
关键字ADD表示向表中添加索引,其他参数与使用CREATE TABLE语句创建索引时相同。
知识点梳理
二
删除索引
ALTER TABLE语句
➽ALTER TABLE 表名 DROP INDEX 索引名;
DROP INDEX 语句
➽DROP INDEX 索 引 名 ON 表名;
限时练习
三
1.MySQL中索引的主要作用是( )
A. 加快数据查询速度
B. 减少数据存储空间
C. 提高数据插入速度
D. 强制数据唯一性
答案:A
解析:索引的核心作用是优化查询效率,通过快速定位数据减少全表扫描。
限时练习
三
2.MySQL默认的索引类型是( )
A. B-Tree索引
B. 哈希索引
C. 全文索引
D. 空间索引
答案:A
解析:InnoDB和MyISAM引擎默认使用B-Tree索引,支持范围查询和排序。
限时练习
三
3.以下创建索引的语句正确的是( )
A. CREATE INDEX idx_name ON users (name);
B. ADD INDEX idx_name ON users (name);
C. INDEX idx_name FOR users (name);
D. CREATE idx_name ON users (name);
答案:A
解析:标准语法为 CREATE INDEX 索引名 ON 表名 (列名);,其他选项语法错误。
限时练习
三
4.关于索引的缺点,以下描述正确的是( )
A. 索引会占用额外内存
B. 索引会降低写操作(如INSERT、UPDATE)性能
C. 索引会导致数据冗余
D. 索引无法加速JOIN操作
答案:B
解析:索引需要维护,增删改数据时需要同步更新索引,可能降低写操作效率。
限时练习
三
5.以下场景中,不适合创建索引的是( )
A. 频繁作为WHERE条件的列
B. 数据重复率高的列
C. 表数据量较大
D. 主键列
答案:B
解析:数据重复率高的列(如性别仅有“男/女”)创建索引意义不大,无法有效过滤数据。
限时练习
三
6.所有索引都可以加快查询速度。( )
答案:×
7.主键列会自动创建唯一索引。( )
答案:√
限时练习
三
8.索引越多越好,可以提升所有操作的性能。( )
答案:×
9.全文索引仅适用于短文本字段。( )
答案:×
限时练习
三
10.为 employees 表的 email 列创建一个唯一索引 idx_email。
答案:
CREATE UNIQUE INDEX idx_email ON employees (email);
限时练习
三
11.删除 products 表中名为 idx_price 的索引。
答案:
DROP INDEX idx_price ON products;
限时练习
三
12.查看 orders 表的所有索引信息。
答案:
SHOW INDEX FROM orders;
谢谢
$$