主键索引(不允许有空值)
唯一索引(允许有空值)
复合索引(联合索引,多个列)(推荐用这种方式做索引)
聚簇索引
非聚簇索引
普通列索引
索引是存放到磁盘上的,存放在索引页(逻辑页),索引页就是Btree的叶子节点其默认大小为16KB
在查询数据时,InnoDb通过B+Tree聚集索引找到记录所在的索引页,并载入内存
通过key在索引页的槽中进行二分查找,找到key对应的槽
槽找到后,根据槽管理的记录按顺序找到key对应的记录
Hash(MySql可选项), B+Tree(MySql默认), B-Tree(已不提供)
Hash:
原理: 存储结构是key-value形式存在数组中,然后通过hash函数(key)得到一个值,这个值就是它们的索引,当取数据的时候,key通过hash得到索引值,直接找就行了,复杂度为O(1)
优点:
查找速度快
缺点:
对范围的查找不支持(主要原因)