对RBO如何判断索引的使用顺序推测如下:
首先,根据索引包含的列是否被WHERE语句中完全包括,将索引分为两大类:一类索引被完全包含,一类不被完全包含(还有一类索引,这种索引根本没有被WHERE语句包括,不过这种索引不会被使用,因此这里也就不考虑了)。而完全包含的索引被优先考虑;
如果多个索引都是完全包含索引或者都是不完全包含索引,那么比较索引中被WHERE语句中包含的列的个数,包含的个数越多,越被优先考虑(从这一点可以推出文档上给出的结论:完全包含的复合索引与完全包含的单列索引相比具有优先级);
如果两个索引都是完全包含索引或者都是不完全包含索引,且包含的列数也相同的话,那么Oracle会优先考虑最后创建的那个索引。 Oracle会根据上面的三个条件的顺序找到优先级最高的索引作为RBO使用的索引。
以上结论仅是个人通过查询结果进行的推断,不保证与Oracle真是情况完全一致。
原文地址:http://yangtingkun.itpub.net/post/468/220101
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/36754/viewspace-249022/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/36754/viewspace-249022/