这篇博文主要是对自己之前学习并了解数据库索引的总结。
数据库索引按照各种说法类似目录或者书签的概念,主要的作用就是是数据库查询效率提升,主要分为一下几类:
Normal:
表示普通索引,大多数情况下都可以使用
Unique:
约束唯一标识数据库表中的每一条记录,即在单表中不能用每条记录是唯一的(例如身份证就是唯一的),Unique和Primary Key约束均为列或列集合中提供了唯一性的保证,Primary Key是拥有自动定义的Unique约束,但是每个表中可以有多个Primary Key约束,但是只能有一个Unique约束。
Full Text:
表示全文收索,在检索长文本的时候,效果最好,短文本建议使用Index,但是在检索的时候数据量比较大的时候,现将数据放入一个没有全局索引的表中,然后在用Create Index创建的Full Text索引,要比先为一张表建立Full Text然后在写入数据要快的很多
有好处就有缺点,下面简述一下数据库索引的一些缺陷:
不能因为建索引可以提高查询效率,就建立很多索引,建索引一方面要占用物理存储空间,另一方面
在进行dml操作(插入、更新、删除)时,会降低效率。
降低效率原因:事物都是有两面的, 索引能让数据库查询数据的速度上升, 而使写入数据的速度下降,原因很简单的, 因为平衡树这个结构必须一直维持在一个正确的状态, 增删改数据都会改变平衡树各节点中的索引数据内容,破坏树结构, 因此,在每次数据改变时, DBMS必须去重新梳理树(索引)的结构以确保它的正确,这会带来不小的性能开销,也就是为什么索引会给查询以外的操作带来副作用的原因。
每次给字段建一个新索引, 字段中的数据就会被复制一份出来, 用于生成索引。 因此, 给表添加索引,会增加表的体积, 占用磁盘存储空间。