1. 普通索引(Normal Index)
- 特点: 最常见的索引类型,可以加速数据的查询。
- 创建方法:
CREATE INDEX index_name ON table_name (column_name);
2. 唯一索引(Unique Index)
- 特点: 除了加速查询外,还要求索引列中的每个值都是唯一的,不能出现重复值。
创建方法:
CREATE UNIQUE INDEX index_name ON table_name (column_name);
3. 主键索引(Primary Key Index)
- 特点: 一种特殊的唯一索引,不允许有空值(NULL)。每个表只能有一个主键。
创建方法:
CREATE TABLE table_name (
column_name datatype PRIMARY KEY
);
4. 全文索引(Fulltext Index)
-
特点: 主要用于全文搜索,可以加速对文本字段的关键词查询。适用于 CHAR、VARCHAR 和 TEXT 类型的列。
-
注意: 仅适用于 MyISAM 和 InnoDB 存储引擎(MySQL 5.6 及更高版本的 InnoDB 支持全文索引)。
-
工作原理: 将文本字段拆分成单词,然后对每个单词建立索引。查询时,通过匹配查询词与倒排索引中的单词来找到相关记录。例如,SELECT * FROM table WHERE MATCH(column) AGAINST(‘keyword’)。
创建方法:
CREATE FULLTEXT INDEX index_name ON table_name (column_name);
5. 空间索引(Spatial Index)
- 特点: 用于加速地理空间数据的查询,适用于 MyISAM 存储引擎和支持 GIS 数据类型的表。
创建方法:
CREATE SPATIAL INDEX index_name ON table_name (spatial_column);
6. 复合索引(Composite Index)
- 特点: 在多个列上创建的索引,可以加速涉及这些列的查询。适用于需要同时查询多列数据的情况。
创建方法:
CREATE INDEX index_name ON table_name (column1, column2);
7. 唯一复合索引(Unique Composite Index)
- 特点: 类似于复合索引,但要求索引的组合值必须唯一。
创建方法:
CREATE UNIQUE INDEX index_name ON table_name (column1, column2);
8. 哈希索引(Hash Index)
- 特点: 基于哈希表实现的索引,查询效率高,但不支持范围查询。适用于 MEMORY 引擎。
创建方法:
CREATE TABLE table_name (
column_name datatype,
INDEX USING HASH (column_name)
) ENGINE=MEMORY;