一个表中有三个字段,XX,YY,ZZ,如果要建立给这三个字段建组合索引(Composite Index),组合索引中字段的顺序应该遵循怎样一个原则。
一般的原则:越离散的字段越靠前。哪个列可以降低索引的扫描成本就放在前面。
比如:下位三个字段的离散情况XX:2
YY:1000
ZZ:50000
那么建立索引的顺序应该为:ZZ,YY,XX
CREATE INDEX t_idx ON t (zz,yy,xx);
但是如果where条件中,三个字段的条件都是通过"="号连接的,那么组合索引中字段的顺序就是无所谓了。
Refer:https://forums.oracle.com/forums/thread.jspa?threadID=2425684
Because you are using equality conditions in your predicate, then the order should be XX, YY, ZZ for maximum compress