索引分类
单列索引:一个索引只包含一个列。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索引
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