面试知识点---数据库的索引
2008-10-15 20:22
387 查看
索引相关:
1.索引的分类:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。
我们把这种内容本身就是一种按照一定规则排列的目录称为“聚集索引”。
我们把这种目录纯粹是目录,正文纯粹是正文的排序方式称为“非聚集索引”。
由于聚集索引跟内容的存储顺序相关,因此一个表只能存在一个聚集索引。使用聚集索引的最大好处就是能够根据查询要求,迅速缩小查询范围,避免全表扫描。
2.索引的实现: Hash, B树。。
3.索引的使用:区分单列索引及联合索引:
举例如下:
查询语句“select * from t1 where c1=1 and c2=2”中,
Case1:c1列和c2列上分别建有索引ic1、ic2,那么先使用ic1(或ic2)进行过滤,产生的结果集是临时数据,不再具有索引,所以不可使用ic2(或ic1)进行再次过滤。
Case2:假设存在组合索引it1c1c2(c1,c2),那么查询语句“select * from t1 where c1=1 and c2=2”将能够使用该索引。
并且查询语句“select * from t1 where c1=1”也能够使用该索引。但是,查询语句“select * from t1 where c2=2”不能够使用该索引,因为没有组合索引的引导列,即,要想使用c2列进行查找,必需出现c1等于某值。
因此,where条件语句写的顺序对索引来讲,是至关重要的。
四。补充
发信人: fre (自由), 信区: Java
标 题: Re: 面试知识点---数据库的索引
发信站: 武汉白云黄鹤站 (2008年10月15日20:57:29 星期三)
补充一下:Oracle为例
一、索引还有
1、基于函数索引,比如 select * from stu where upper(name) ='KING';
如果没有索引,将是一个全表扫描
2、位图索引,t(gender,location,age_group,data)有1000万条数据,其中gender、lo
cation、age_group是高度重复的,
对 select * from t where gender='M',and location in(1,2,3) and age_group='19-2
5';
使用位图索引最好,可以通过and 或者 or运算发快速确定
位图索引只适合读密集型操作,因为索引指向表中所有行
二、索引的实现上,对Hash以及B树有各自的适应范围,当好好总结(网易杭研面试问到这
个)
三、索引并不会总增加查询的速度,比较经典的2-5规则,一般情况下当读取小于表中数据
的最高5%时才会使用索引,因为数据库堆表中,数据的存放没有次序,使用索引可能会导
致数据块的重复读取,从而比全扫描的代价还高
三个方面,索引的实现由哪些(内部机制)?有哪些索引(使用场合)?索引对DML的影响
?
当然还可以考虑对REDO的影响
五。。个人继续补充(Oracle)
1.hint
2.RBO/CBO
3.执行计划
1.索引的分类:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。
我们把这种内容本身就是一种按照一定规则排列的目录称为“聚集索引”。
我们把这种目录纯粹是目录,正文纯粹是正文的排序方式称为“非聚集索引”。
由于聚集索引跟内容的存储顺序相关,因此一个表只能存在一个聚集索引。使用聚集索引的最大好处就是能够根据查询要求,迅速缩小查询范围,避免全表扫描。
2.索引的实现: Hash, B树。。
3.索引的使用:区分单列索引及联合索引:
举例如下:
查询语句“select * from t1 where c1=1 and c2=2”中,
Case1:c1列和c2列上分别建有索引ic1、ic2,那么先使用ic1(或ic2)进行过滤,产生的结果集是临时数据,不再具有索引,所以不可使用ic2(或ic1)进行再次过滤。
Case2:假设存在组合索引it1c1c2(c1,c2),那么查询语句“select * from t1 where c1=1 and c2=2”将能够使用该索引。
并且查询语句“select * from t1 where c1=1”也能够使用该索引。但是,查询语句“select * from t1 where c2=2”不能够使用该索引,因为没有组合索引的引导列,即,要想使用c2列进行查找,必需出现c1等于某值。
因此,where条件语句写的顺序对索引来讲,是至关重要的。
四。补充
发信人: fre (自由), 信区: Java
标 题: Re: 面试知识点---数据库的索引
发信站: 武汉白云黄鹤站 (2008年10月15日20:57:29 星期三)
补充一下:Oracle为例
一、索引还有
1、基于函数索引,比如 select * from stu where upper(name) ='KING';
如果没有索引,将是一个全表扫描
2、位图索引,t(gender,location,age_group,data)有1000万条数据,其中gender、lo
cation、age_group是高度重复的,
对 select * from t where gender='M',and location in(1,2,3) and age_group='19-2
5';
使用位图索引最好,可以通过and 或者 or运算发快速确定
位图索引只适合读密集型操作,因为索引指向表中所有行
二、索引的实现上,对Hash以及B树有各自的适应范围,当好好总结(网易杭研面试问到这
个)
三、索引并不会总增加查询的速度,比较经典的2-5规则,一般情况下当读取小于表中数据
的最高5%时才会使用索引,因为数据库堆表中,数据的存放没有次序,使用索引可能会导
致数据块的重复读取,从而比全扫描的代价还高
三个方面,索引的实现由哪些(内部机制)?有哪些索引(使用场合)?索引对DML的影响
?
当然还可以考虑对REDO的影响
五。。个人继续补充(Oracle)
1.hint
2.RBO/CBO
3.执行计划
相关文章推荐
- 数据库索引的实现原理(面试问题:请说出数据库索引实现原理)
- 程序员常见面试之 数据库 知识点小结(二)
- 程序员面试技巧:如何通过索引说数据库优化能力
- 面试技巧,如何通过索引说数据库优化能力,内容来自Java web轻量级开发面试教程
- 【java面试系列之数据库篇】数据库存储引擎、索引、事务、视图、优化
- 面试总结(数据库索引、B树、B+树)
- 一家反欺诈公司的面试经历——8.数据库的索引
- [转载]索引的优点和缺点----数据库设计、面试必看
- 数据库面试_三大索引
- 程序员常见面试之 数据库 知识点小结(三)
- 程序员面试技巧:如何通过索引说数据库优化能力
- 面试-数据库性能(索引)
- 数据库面试知识点
- 面试技巧,如何通过索引说数据库优化能力
- 数据库知识点总结(发展,约束,索引,触发器,连接池,视图,事务)
- 面试技巧,如何通过索引说数据库优化能力,内容来自Java web轻量级开发面试教程
- 面试知识,数据库索引优化
- 数据库基础知识点二:PLSQL、游标、程序包、存储过程、触发器,序列,视图,索引,数据字典
- 面试数据库 - 索引
- 面试知识点6:MySQL中InnoDB的一级索引、二级索引