用过那些索引

普通索引

定义:最基本的索引类型,没有任何限制,主要用于提高查询效率。
创建语法

-- 在表的某列上创建普通索引
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)
);

仅查询索引列数据:当查询语句仅需要索引列中的数据时,使用覆盖索引可以避免访问数据表

posted @ 2025-03-25 20:12  蒟蒻00  阅读(45)  评论(0)    收藏  举报