索引是存储引擎用于快速查找记录的一种数据结构,
快速查找的捷径。
索引就类似一本书的目录,
通过合理的使用数据库索引可以大大提高系统的访问性能。
理解索引也是数据库性能调优的起点。
索引的分类
按照生成索引的列的数量可以分为单列索引,和 ,组合索引。
按照功能:
1. 普通索引
最基本的索引,没有任何限制
2.唯一索引:
与普通索引相识,唯一的不同就是 必须唯一,允许有空值
3.主键索引:
是一种特殊的唯一索引,不允许有空值,在创建主键时创建。
4.全文索引:
最好先插入数据 后创建索引,先建立索引后插入数据效率不高。
然而 生成全文索引是一个非常消耗时间非常消耗磁盘空间的做法。
索引的结构
Mysql 索引主要有两种结构,BTree 和 Hash。
mysql中一般使用BTree(默认)
由于hash索引结构的特殊性,它的检索效率非常高。但是有局限性:
1.hash索引只满足“=”,“in”,“< = / >=”查询,不能使用范围查询。
2.hash索引无法避免数据的排序运算;
3.hash不能利用部分索引查询,组合索引无法利用hash索引的
4.hash索引无法避免表扫描
5.hash索引遇到大量hash值相等的情况下性能比BTree 低
创建索引
创建一个主键就会创建一个主键索引。
create index_name on table(colum(length)); //普通索引
create unique index index_name on ......... //唯一索引
create fulltext index index_name on ...... //全文索引
删除索引
drop INDEX index_name on table;
显示索引信息
show index from table_name;