目录
1:索引的概念:
索引:帮助数据库高效获取数据的数据结构
索引可以理解为书的目录
索引就是一个数据结构:树形数据结构
2:索引的优缺点:
索引的优点:
1:提高数据查询的效率,降低数据库的IO成本。
这里需要提及一个概念叫做IO成本:IO成本是指执行数据库操作时所需的输入/输出开销或资源消耗(与磁盘的读写操作相关)
2:通过索引列对数据进行排序,降低数据排序的成本,降低CPU消耗。
索引的缺点:
1:索引会占用存储空间。
这一点很好理解,你把数据表中的数据变成了一棵树,你需要更多的空间来存储
2:索引大大提高了查询效率,同时却也降低了insert、update、delete的效率。
因为这个索引本质上是一个(B+)树:所以你每次进行增删改,都需要去维护一次树
B+树介绍:
1:每一个节点,可以存储多个key(有n个key,就有n个指针)。
2:所有的数据都存储在叶子节点,非叶子节点仅用于索引数据。
3:叶子节点形成了一颗双向链表,便于数据的排序及区间范围查询
前两点都是为了降低树的高度:因为我们知道在树中查找数据,时间复杂度和树的深度相关
第三点的原因呢就是:为了在最后一层的叶子结点中更方便的进行查找。
索引的语法:
创建索引:create [ unique ] index 索引名 on 表名 (字段名,... )
查看索引:show index from 表名
删除索引:drop index 索引名 on 表名
注意点:
主键字段,在建表时,会自动创建主键索引。(主键索引性能最高)
添加唯一约束时,数据库实际上会添加唯一索引