六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 35|回复: 0

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

[复制链接]

升级  31.33%

31

主题

31

主题

31

主题

秀才

Rank: 2

积分
97
 楼主| 发表于 2013-1-14 08:57:30 | 显示全部楼层 |阅读模式
Oracle 9i以前的复合索引:
如果索引有多个字段组成,索引中每个字段对于查询的价值是不同的,通常最常用到的查询字段应该放在最前面;或者相同查询几率的字段根据字段内容的相异程度(相异程度越高,索引效率越高)来决定。即:建索引的时候除了要考虑前置列,最好还要考虑DISTINCT数量最多的建为索引。  
一个原则:如果在where条件中有对索引中第一个字段的查询,索引是可以被使用的;但是如果在where条件中没有对索引中第一个子段的查询而只有后面的字段的话,索引是无法使用的。
即:9I之前:那么要考虑你的复合索引的第一列必须在你的查询中被引用,这样你的复合索引才会起作用,否则这个索引就不起作用,照样是全表访问。
oracle 9i以后的复合索引: 
无所谓必须使用索引中的第一个字段了。
9I之后:就不受上面条件的限制,怎么建都行。
 
oracle在一个复合索引中,最多可以由多少个列?
组合索引最多可放置32个列,所有列得总尺寸不能超过db_block_size得1/3.
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表