[转]oracle的复合索引两个知识点

Oracle 9i以前的复合索引:
如果索引有多个字段组成,索引中每个字段对于查询的价值是不同的,通常最常用到的查询字段应该放在最前面;或者相同查询几率的字段根据字段内容的相异程度(相异程度越高,索引效率越高)来决定。即:建索引的时候除了要考虑前置列,最好还要考虑DISTINCT数量最多的建为索引。  
一个原则:如果在where条件中有对索引中第一个字段的查询,索引是可以被使用的;但是如果在where条件中没有对索引中第一个子段的查询而只有后面的字段的话,索引是无法使用的。
即:9I之前:那么要考虑你的复合索引的第一列必须在你的查询中被引用,这样你的复合索引才会起作用,否则这个索引就不起作用,照样是全表访问。
oracle 9i以后的复合索引: 
无所谓必须使用索引中的第一个字段了。
9I之后:就不受上面条件的限制,怎么建都行。


oracle在一个复合索引中,最多可以由多少个列?
组合索引最多可放置32个列,所有列得总尺寸不能超过db_block_size得1/3.

猜你喜欢

转载自sangei.iteye.com/blog/1458666