一、索引介绍
索引是关系型数据库中给数据库表中一列或多列的值排序后的存储结构,SQL的主流索引结构有B+树以及Hash结构, 聚集索引以及非聚集索引用的是B+树索引。这篇文章会总结SQL Server以及MySQL的InnoDB和MyISAM两种SQL的索引。
二、数据库索引优缺点
索引就像是书的目录,是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行的速度。索引中包含由表或视图中的一列或多列生成的键。 这些键存储在一个结构(BTree)中,使SQL可以快速有效地查找与键值关联的行。
- 索引的优点
建立索引的列可以保证行的唯一性,生成唯一的rowId,建立索引可以有效缩短数据的检索时间, 建立索引可以加快表与表之间的连接,为用来排序或者是分组的字段添加索引可以加快分组和排序顺序 - 索引的缺点
创建索引和维护索引需要时间成本,这个成本随着数据量的增加而加大,创建索引和维护索引需要空间成本, 每一条索引都要占据数据库的物理存储空间,数据量越大,占用空间也越大(数据表占据的是数据库的数据空间), 会降低表的增删改的效率,因为每次增删改索引需要进行动态维护,导致时间变长
三、数据库数据结构
- 二叉树
- 红黑树
- B树
- B+树
四、 数据库索引类型
SQL Sever索引类型有:唯一索引,主键索引,聚集索引,非聚集索引。MySQL 索引类型有:唯一索引,主键(聚集)索引,非聚集索引,全文索引。
- 聚集索引
- 非聚集索引
- 普通索引
- 唯一索引
- 全文索引(FULLTEXT)
- 单列索引、多列索引
- 组合索引(最左前缀)