索引分类

单列索引:一个索引只包含一个列。

ALTER TABLE table_name ADD INDEX index_name (col);

复合索引:一个索引包含多个列。

ALTER TABLE table_name ADD INDEX index_name (col1, col2);

索引类型

主键索引:

ALTER TABLE table_name ADD PRIMARY KEY (col);

唯一索引:

索引列的值必须是唯一的,但允许 NULL 值。

ALTER TABLE table_name ADD UNIQUE index_name (col);

普通索引:

ALTER TABLE table_name ADD INDEX index_name (column_list);

全文索引:

ALTER TABLE table_name ADD FULLTEXT index_name (column_list);

索引结构

BTree索引

image.png

image.png

Hash索引

哈希索引(hash index)基于哈希表实现,只有精确匹配索引所有列的查询才有效。对于每一行数据,存储引擎都会对所有的索引列计算一个哈希码(hash code),哈希码是一个较小的值,并且不同键值的行计算出来的哈希码也不一样。哈希索引将所有的哈希码存储在索引中,同时在哈希表中保存指向每个数据行所在的物理地址的指针。

索引的操作

创建索引:

ALTER TABLE table_name ADD INDEX index_name (column_list);

删除索引:

DROP INDEX index_name ON table_name;

查看索引:

SHOW INDEX FROM table_name\G

小伍
139 声望4 粉丝