索引

来源:互联网 发布:java高级架构师实战 编辑:程序博客网 时间:2024/06/07 21:43

聚集索引

聚集索引确定表中数据的物理顺序,一个表只能包含一个聚集索引,但该索引可以包含多个列(组合索引)。 
应用范围:
1 对于那些经常要搜索范围值的列特别有效,避免每次查询该列时都进行排序,从而节 省成本。
2 如果索引值唯一,使用聚集索引查找特定行。例如,使用唯一的雇员Id这个列去查找雇员信息,在雇员Id上加聚集索引是最快速的方法(把id设置成主键也是一样的)。

由此可以看出聚集索引主要是用在返回某范围内的数据,比如有个时间列,你经常要查询某段时间内的数据,那么在时间列上建立聚集索引是很好的。其次要考虑的是时候会经常根据某个列屈查询那一行的数据,如根据姓名查询人员信息,那么在姓名列建立聚集所以是很好的。综上所述,无意义的主键设置为聚集索引时没有意义的,因为第一:我们不可能去查询某个范围内的ID的数据,第二:我们很少会用无意义的主键去查询某条数据。


聚集索引和非聚集索引的区别

1 假设我们的数据库是一本词典,那么按照拼音字母的目录就是聚集索引,比如我要找个“安”字,那么你肯定会去前几页找,如果找完了a还是没有“安”,那么这本字典就没有这个字了。
2 而有时候,我们不认识这个字怎么发音,那么我们需要按照偏旁去查找这个字,这就是非聚集索引,我们查宝盖头,查出来“宝”“安”等字并不是在物理地址上紧挨着的,我们找到这个字需要2个过程:先找到目录中的结果,然后再翻到您所需要的页码。


聚集索引和非聚集索引的应用场景



索引的优点与缺点及其使用场景

优点:
1 加快查询速度,这是创建索引的主要原因。
2 显著减少查询中分组和排序的时间。
缺点:
1 创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。
2 需要占物理空间。
3 进行表数据增删改的时候,索引也要动态的维护。
索引的使用场景:
1 在经常需要搜索的列上,可以加快搜索的速度
2 在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构
3 在经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度
4 在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,
其指定的范围是连续的
5 在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以
利用索引的排序,加快排序查询时间
索引不使用的场景:
1 查询中很少使用或者参考的列不应该创建索引
2 很多相同值的列,如性别列,基本上都是相同的,排序了和没排序相差不大
3 增删改多于查询的情况,维护成本高


---------------------------------------------------------------------------------------------------------------
现在发送在CSDN上的文章都能在手机端查看啦,走路上班、闲暇之余可以看看手机,共勉共进!


0 0
原创粉丝点击