数据库索引含义,优点缺点,使用原则

索引

1. 索引是什么?

索引(Index)是帮助数据库高效获取数据的数据结构。举个例子,有一个数据库表User。

假设现在要查询name为Lily的的人员,如果没有索引,数据库不得不查询user表中的每一行并确定这一样的name是否为Lily。由于我们想要得到每一个名字为Lily的雇员信息,在查询到第一个符合条件的行后,不能停止查询,因为可能还有其他符合条件的行。所以,必须一行一行的查找直到最后一行-这就意味数据库不得不检查上千行数据才能找到所以名字为Lily的雇员。这就是所谓的全表扫描。为了加快搜索速度,这里就出现了索引。索引是对某个字段进行排序的一种方式。对表中的某个字段建立索引会创建另一种数据结构,其中保存着字段的值,每个值又指向与它相关的记录。这种索引的数据结构是经过排序的,因而可以对其执行二分查找。

对上个表的name字段进行索引,就是在数据库存储空间上创建一块专用的控件,把User表的所有的name字段的值拿出来放到这里,并且对这些值进行按照字母顺序排序,并且每个值都携带着这个name对应的行所在数据块的地址。因为name是进过排序的,按照一定的数据结构存储的,所以数据库引擎在查找的时候,比如说查找name为Lily,引擎就会计算,Lily大概在整个排序结构的大致地方,然后到那里去拿出这个值看看是不是,不是的话就再次相应的向左或者向右移动去寻找。(这里用到的知识都是大学时候的数据结构的知识,二分法查找,相对于毫无头绪的一个一个的查找,二分法的查找速度明显的提高,达到了log2 N。)

2. 索引优点缺点?使用原则?

优点:大大提高了查询速度

缺点:第一,创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。

第二,索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。

第三,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。

使用原则:

通过上面说的优点和缺点,我们应该可以知道,并不是每个字段度设置索引就好,也不是索引越多越好,而是需要自己合理的使用。

1、对经常更新的表就避免对其进行过多的索引,对经常用于查询的字段应该创建索引,

2、数据量小的表最好不要使用索引,因为由于数据较少,可能查询全部数据花费的时间比遍历索引的时间还要短,索引就可能不会产生优化效果。

3、在一同值少的列上(字段上)不要建立索引,比如在学生表的"性别"字段上只有男,女两个不同值。相反的,在一个字段上不同值较多可是建立索引。

 

3. 什么时候使用索引?

当使用的SQL语句中有where子语句时,比如select * from User where name= Lily;数据库会检查在查询的列上是否有索引。假设name列上确实创建了索引,数据库会接着检查使用这个索引做查询是否合理 - 因为有些场景下,使用索引比起全表扫描会更加低效。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值