一.索引的说明及其优缺点
数据库索引其实就是对表的一列或者多列进行查询的方法,大大减少查询时间,是对我们查询的一种优化,当数据量大时,利用数据库索引可以提高我们对数据库操作的速度.
优点:
1.减少了扫描数据的数量,提高了检索时间
2.帮助服务器避免建立临时表
3.使得随机io变成顺序io
4.提高表与表之间的连接速度
5.可以通过创建唯一性索引,保证表里每一行数据的唯一性
缺点:
1.建立索引和维护索引需要时间,数据越多越难处理
2.占领更多的空间
3.对数据库进行增,删,该时,也要维护索引,需要时间去处理
4.当数据量小的表,我们运用索引查询不便捷
5.表中重复数据多时,建立索引的意义就不大了
二.索引的结构
索引主要分为三种结构:B-TREE ,B+TREE ,HASH
B-TREE:B-树就是B树,多路搜索树,树高一层意味着多一次的磁盘I/O
B+TREE:B+树是B-树的变体,也是一种多路搜索树
HASH:哈希索引就是采用一定的哈希算法,把键值换算成新的哈希值,检索时不需要类似B+树那样从根节点到叶子节点逐级查找,只需一次哈希算法即可立刻定位到相应的位置,速度非常快。
三.分类
mysql的索引有两种分类方式:逻辑分类和物理分类
逻辑分类:有多种逻辑划分的方式,比如按功能划分,按组成索引的列数划分等
物理分类:分为聚簇索引和非聚簇索引(有时也称辅助索引或二级索引)