内容正文:
专题八 索引
一、单项选择题
1.在 MySQL 中,可以确保列值的唯一性,并且允许有空值的索引是( )
A. 普通索引
B. 唯一索引
C. 主键索引
D. 全文索引
答案:B
解析:唯一索引要求索引列的值必须唯一,但允许有空值。普通索引允许重复值和空值;主键索引不允许空值;全文索引用于文本关键词查找。
2.一张表中最多可以有( )聚族索引
A. 0 个
B. 1 个
C. 2 个
D. 多个
答案:B
解析:在 InnoDB 存储引擎中,一张表只能有一个聚族索引,聚族索引通常由主键索引构成。
3.以下数据类型不适合创建全文索引的是( )
A. char
B. text
C. varchar
D. int
答案:D
解析:全文索引只能在字符类型的列上创建,int 类型不适合。
4.在创建组合索引时,以下说法正确的是( )
A. 索引字段顺序不影响查询性能
B. 应把选择性低的字段放在前面
C. 只有在查询条件使用了组合索引的所有字段时,索引才会生效
D. 应把选择性高的字段放在前面
答案:D
解析:组合索引中,字段顺序影响查询性能,应把选择性高的字段放在前面;只要查询条件使用了组合索引最左边的字段,索引就可能生效。
5.可以提高对大文本字段的搜索效率的索引是( )
A. 普通索引
B. 唯一索引
C. 全文索引
D. 空间索引
答案:C
解析:全文索引专门用于对文本类型的列进行全文搜索,可提高大文本字段的搜索效率。普通索引、唯一索引和空间索引都不适合大文本字段的搜索。
6.在 MySQL 中,使用 CREATE TABLE 语句创建表时,创建普通索引的关键字是( )
A. UNIQUE
B. FULLTEXT
C. INDEX
D. SPATIAL
答案:C
解析:在 CREATE TABLE 语句中,使用 INDEX 关键字创建普通索引;UNIQUE 用于创建唯一索引;FULLTEXT 用于创建全文索引;SPATIAL 用于创建空间索引。
7.当对表中的数据进行频繁的插入、更新和删除操作时,过多的索引会( )
A. 提高操作性能
B. 降低操作性能
C. 不影响操作性能
D. 有时提高,有时降低操作性能
答案:B
解析:过多的索引会在数据插入、更新和删除时增加维护索引的开销,从而降低操作性能。
8.以下关于索引的说法,错误的是( )
A. 索引可以提高查询效率
B. 索引会占用额外的存储空间
C. 所有数据类型都可以被索引
D. 索引越多,查询性能一定越好
答案:D
解析:索引并非越多越好,过多的索引会增加维护开销,降低数据插入、更新和删除的性能,还会占用额外存储空间。
9.在创建表时,定义主键的关键字是( )
A. PRIMARY KEY
B. UNIQUE
C. INDEX
D. KEY
答案:A
解析:在创建表时,使用 PRIMARY KEY 关键字定义主键。UNIQUE 用于定义唯一索引;INDEX 和 KEY 都可用于定义普通索引。
10.空间索引适用于( )
A. 日期类型
B. 空间数据类型
C. 数值类型
D. 字符串类型
答案:B
解析:空间索引是定义在空间数据类型上的索引,其他数据类型不适用。
二、判断题
1.普通索引允许在定义索引的列中插入重复值,但不允许插入空值。( )
答案:错误
解析:普通索引允许在定义索引的列中插入重复值和空值。
2.主键索引是一种特殊的唯一索引,一张表可以有多个主键索引。( )
答案:错误
解析:主键索引是特殊的唯一索引,但一张表只能有一个主键索引。
3.全文索引可以在任何数据类型的列上创建。( )
答案:错误
解析:全文索引只能在 char、varchar 或者 text 类型的列上创建。
4.创建组合索引时,查询条件使用组合索引中部分字段(只要包含最左边字段),该索引也可能生效。( )
答案:正确
解析:组合索引只要查询条件使用了最左边字段,索引就可能生效。
5.索引会占用额外空间,但合理的索引可以提高查询效率。( )
答案:正确
解析:虽然索引会占用额外空间,但合理的索引可以提高查询效率,不能一味追求少,要根据实际情况创建。
6.使用 CREATE INDEX 语句可以创建主键索引。( )
答案:错误
解析:CREATE INDEX 语句不能创建主键索引,主键索引一般在创建表时用 PRIMARY KEY 定义。
7.在 MySQL 中, MyISAM 存储引擎支持空间索引。( )
答案:正确
解析:只有 MyISAM 存储引擎支持空间索引。
8.唯一索引和主键索引都不允许有空值。( )
答案:错误
解析:唯一索引允许有空值,主键索引不允许有空值。
9.对经常用于查询条件的列创建索引,可以提高查询效率。( )
答案:正确
解析:对经常用于查询条件的列创建索引,能减少查询时扫描的数据量,提高查询效率。
10.不可见索引在数据查询时,优化器会忽略它。( )
答案:正确
解析:当创建索引时设置为 INVISIBLE,即不可见索引,在数据查询时,优化器会忽略该索引。
三、命令题
1.创建一个名为students的表,包含id(整型,主键)、name(字符串型,长度为 50)、age(整型),并为name列创建普通索引。
答案:
CREATE TABLE students (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT,
INDEX idx_name (name)
);
2. 创建一个名为products的表,包含product_id(整型,主键)、product_name(字符串型,长度为 100)、price(浮点型),为product_name列创建唯一索引。
答案:
CREATE TABLE products (
product_id INT PRIMARY KEY,
product_name VARCHAR(100),
price FLOAT,
UNIQUE INDEX idx_product_name (product_name)
);
3. 创建一个名为articles的表,包含article_id(整型,主键)、title(字符串型,长度为 200)、content(文本型),为content列创建全文索引。
答案:
CREATE TABLE articles (
article_id INT PRIMARY KEY,
title VARCHAR(200),
content TEXT,
FULLTEXT INDEX idx_content (content)
);
4. 创建一个名为orders的表,包含order_id(整型,主键)、customer_id(整型)、order_date(日期型),创建一个组合索引,包含customer_id和order_date列。
答案:
CREATE TABLE orders (
order_id INT PRIMARY KEY,
customer_id INT,
order_date DATE,
INDEX idx_customer_order (customer_id, order_date)
);
5. 创建一个名为locations的表,包含location_id(整型,主键)、geom(空间数据类型),为geom列创建空间索引。
答案:
CREATE TABLE locations (
location_id INT PRIMARY KEY,
geom GEOMETRY,
SPATIAL INDEX idx_geom (geom)
);
学科网(北京)股份有限公司
$$
专题八 索引
一、单项选择题
1.在 MySQL 中,可以确保列值的唯一性,并且允许有空值的索引是( )
A. 普通索引
B. 唯一索引
C. 主键索引
D. 全文索引
2.一张表中最多可以有( )聚族索引
A. 0 个
B. 1 个
C. 2 个
D. 多个
3.以下数据类型不适合创建全文索引的是( )
A. char
B. text
C. varchar
D. int
4.在创建组合索引时,以下说法正确的是( )
A. 索引字段顺序不影响查询性能
B. 应把选择性低的字段放在前面
C. 只有在查询条件使用了组合索引的所有字段时,索引才会生效
D. 应把选择性高的字段放在前面
5.可以提高对大文本字段的搜索效率的索引是( )
A. 普通索引
B. 唯一索引
C. 全文索引
D. 空间索引
6.在 MySQL 中,使用 CREATE TABLE 语句创建表时,创建普通索引的关键字是( )
A. UNIQUE
B. FULLTEXT
C. INDEX
D. SPATIAL
7.当对表中的数据进行频繁的插入、更新和删除操作时,过多的索引会( )
A. 提高操作性能
B. 降低操作性能
C. 不影响操作性能
D. 有时提高,有时降低操作性能
8.以下关于索引的说法,错误的是( )
A. 索引可以提高查询效率
B. 索引会占用额外的存储空间
C. 所有数据类型都可以被索引
D. 索引越多,查询性能一定越好
9.在创建表时,定义主键的关键字是( )
A. PRIMARY KEY
B. UNIQUE
C. INDEX
D. KEY
10.空间索引适用于( )
A. 日期类型
B. 空间数据类型
C. 数值类型
D. 字符串类型
二、判断题
1.普通索引允许在定义索引的列中插入重复值,但不允许插入空值。( )
2.主键索引是一种特殊的唯一索引,一张表可以有多个主键索引。( )
3.全文索引可以在任何数据类型的列上创建。( )
4.创建组合索引时,查询条件使用组合索引中部分字段(只要包含最左边字段),该索引也可能生效。( )
5.索引会占用额外空间,但合理的索引可以提高查询效率。( )
6.使用 CREATE INDEX 语句可以创建主键索引。( )
7.在 MySQL 中, MyISAM 存储引擎支持空间索引。( )
8.唯一索引和主键索引都不允许有空值。( )
9.对经常用于查询条件的列创建索引,可以提高查询效率。( )
10.不可见索引在数据查询时,优化器会忽略它。( )
三、命令题
1.创建一个名为students的表,包含id(整型,主键)、name(字符串型,长度为 50)、age(整型),并为name列创建普通索引。
2. 创建一个名为products的表,包含product_id(整型,主键)、product_name(字符串型,长度为 100)、price(浮点型),为product_name列创建唯一索引。
3. 创建一个名为articles的表,包含article_id(整型,主键)、title(字符串型,长度为 200)、content(文本型),为content列创建全文索引。
4. 创建一个名为orders的表,包含order_id(整型,主键)、customer_id(整型)、order_date(日期型),创建一个组合索引,包含customer_id和order_date列。
5. 创建一个名为locations的表,包含location_id(整型,主键)、geom(空间数据类型),为geom列创建空间索引。
学科网(北京)股份有限公司
$$