MST

星途 面试题库

面试题:MySQL中创建索引的基本语句及适用场景

请写出在MySQL中创建普通索引、唯一索引和联合索引的语句,并简要说明每种索引通常适用于什么样的查询场景。
39.3万 热度难度
数据库MySQL

知识考点

AI 面试

面试题答案

一键面试

创建普通索引

-- 方式一:在创建表时创建普通索引
CREATE TABLE table_name (
    column1 datatype,
    column2 datatype,
    INDEX index_name (column1)
);

-- 方式二:在已存在的表上创建普通索引
CREATE INDEX index_name ON table_name (column1);

-- 方式三:使用ALTER TABLE语句创建普通索引
ALTER TABLE table_name ADD INDEX index_name (column1);

普通索引适用于经常进行单条件查询(例如 SELECT * FROM table_name WHERE column1 = 'value';)的场景,它可以加快查询速度,但不限制值的唯一性。

创建唯一索引

-- 方式一:在创建表时创建唯一索引
CREATE TABLE table_name (
    column1 datatype,
    column2 datatype,
    UNIQUE INDEX index_name (column1)
);

-- 方式二:在已存在的表上创建唯一索引
CREATE UNIQUE INDEX index_name ON table_name (column1);

-- 方式三:使用ALTER TABLE语句创建唯一索引
ALTER TABLE table_name ADD UNIQUE INDEX index_name (column1);

唯一索引适用于需要确保某列或某些列组合的值唯一的场景,并且在基于该列进行查询(如 SELECT * FROM table_name WHERE column1 = 'value';)时也能提高查询效率,因为数据库可以利用唯一索引快速定位到唯一值。

创建联合索引

-- 方式一:在创建表时创建联合索引
CREATE TABLE table_name (
    column1 datatype,
    column2 datatype,
    INDEX index_name (column1, column2)
);

-- 方式二:在已存在的表上创建联合索引
CREATE INDEX index_name ON table_name (column1, column2);

-- 方式三:使用ALTER TABLE语句创建联合索引
ALTER TABLE table_name ADD INDEX index_name (column1, column2);

联合索引适用于经常使用多个列作为查询条件的场景,例如 SELECT * FROM table_name WHERE column1 = 'value1' AND column2 = 'value2';。需要注意联合索引的最左前缀原则,即查询条件要从索引定义的最左边开始使用索引才会生效。