某次公司让我参加一个面试,我问应聘人员,Oracle里有什么索引?他说,有聚集索引和非聚集索引。。。。
我没怎么用过SQLserver,但知道sqlserver里有聚集索引和非聚集索引,Oracle里的索引是另外的洞天吧。。。
一: Oracle的索引
B树索引:最常见的索引
位图索引:适用于某列只有几种数据,比如“类别”,但是呢,对DML频繁的表并不适合,在仓库环境下较常用。
函数索引:并不常用呢,因为有些函数它的参数不定呢。很多书上都举了,upper函数这样的例子,但是对于substr,len这样的函数,如何建立函数索引?
反向键索引:很少用,只能用于等值查询。。。
唯一索引:数据不可重复。。。
在有表分区的时候,有局部索引和全局索引之分。貌似,全局索引不建立为妙。否则分区不好维护呢。
二 :Sqlserver的索引
物理上只有聚集索引和非聚集索引两类吧。当然也有唯一索引、主键索引这类的分法。
一般有过数据查询优化经验的,或者大规模数据处理的程序员都研究过索引吧。
索引可以提高查询性能,但影响了插入,删除,更新的性能。当然,DML时利用索引定位也是一种很好的方案。
当索引的数据被删除更新超过20%{?},需要重建索引。。。。