目录
一、什么是索引?
二、索引的优点
三、索引的缺点
四、索引有哪几种数据类型?
一、什么是索引?
索引是一种能够帮组Mysql高效的从磁盘上检索数据的一种数据结构。在MySQL中的InnoDB引擎中,采取了B+树的结构来实现索引和数据的存储。
二、索引的优点
1)查询效率高:
通过B+树的结构来存储数据,因为B+树除了叶子节点之外,其他的节点只存储索引,不存储数据,所以可以大大减少数据检索时的磁盘IO次数,从而提升数据查询的性能;B+树在进行范围查找的时候,只要找到起始节点,然后基于叶子节点的双向链表结构往下读取即可,查询效率较高。
2)保证了数据唯一性:
在某些情况下,我们需要保证某个字段的值是唯一的,比如用户的ID或者邮箱等。可以通过唯一索引来约束,保证数据表中的每一行数据的唯一。
三、索引的缺点
1)占用物理空间:
索引需要占用物理空间,数据库的增加、修改、删除操作,需要涉及到索引的维护,当数据量较大的情况下,索引的维护会带来较大的性能开销。
2)性能降低:
创建索引的时候,需要考虑到索引字段值的分散性,如果字段的重复数据过多,创建索引反而会造成性能降低。
四、索引有哪几种数据类型?
1)主键索引:数据列不允许重复,不允许为null,一个表只能有一个主键。
2)唯一索引:数据列不允许重复,允许为null值,一个表允许多个列创建唯一索引。
3)普通索引:基本的索引类型,没有唯一性的限制,允许为Null值。
4)全文索引:是目前搜索引擎使用的一种关键技术,对文本的内容进行分词、搜索。
5)覆盖索引:查询列要被建立的索引覆盖,不必读取数据行。
6)组合索引:多列值组成一个索引,用于组合搜索,效率大于索引合并