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