用过那些索引
普通索引
定义:最基本的索引类型,没有任何限制,主要用于提高查询效率。
创建语法:
-- 在表的某列上创建普通索引
CREATE INDEX index_name ON table_name (column_name);
使用场景:适用于经常用于查询条件的列,例如在用户表中,经常根据用户的姓名进行查询,就可以在姓名列上创建普通索引。
唯一索引
定义:索引列的值必须唯一,但允许有空值。如果是组合唯一索引,则列值的组合必须唯一。
创建语法:
-- 在表的某列上创建唯一索引
CREATE UNIQUE INDEX index_name ON table_name (column_name);
使用场景:常用于需要保证数据唯一性的列,如用户表中的邮箱列,每个用户的邮箱应该是唯一的,此时可以在邮箱列上创建唯一索引。
主键索引
定义:一种特殊的唯一索引,不允许有空值。每个表只能有一个主键索引,它能唯一标识表中的每一行记录。
创建语法:
-- 在创建表时定义主键索引
CREATE TABLE table_name (
id INT PRIMARY KEY,
column1 VARCHAR(50),
column2 INT
);
使用场景:通常用于表的主键列,如用户表中的用户 ID 列,通过主键索引可以快速定位到某一个用户的记录。
全文索引
定义:主要用于在文本数据中进行全文搜索,它会对文本内容进行分词处理,然后创建索引。
创建语法:
-- 在表的某列上创建全文索引
CREATE FULLTEXT INDEX index_name ON table_name (column_name);
使用场景:适用于需要进行全文搜索的场景,如新闻文章表中的文章内容列,用户可以通过关键词搜索包含该关键词的文章。
组合索引
定义:在多个列上创建的索引,也称为复合索引。
创建语法
-- 在表的多列上创建组合索引
CREATE INDEX index_name ON table_name (column1, column2, column3);
使用场景:当查询条件经常涉及多个列时,可以创建组合索引。例如,在订单表中,经常根据用户 ID 和订单日期进行查询,就可以在用户 ID 和订单日期列上创建组合索引。
覆盖索引
定义:覆盖索引指的是在一个查询里,索引中包含了查询所需的全部列数据,这样数据库在执行查询时,只需通过索引就能获取到所需的所有信息,而无需再去查询数据表。
创建语法
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT,
email VARCHAR(100)
);
仅查询索引列数据:当查询语句仅需要索引列中的数据时,使用覆盖索引可以避免访问数据表

浙公网安备 33010602011771号