日期:2014-05-17  浏览次数:21126 次

oracle小表需要建索引吗?
有个SQL查询语句涉及到一个大表和一个小表,大表建了索引,小表需要建索引吗?

------解决方案--------------------
你看看你的sql语句对应的执行计划,建个索引还是有必要的。
------解决方案--------------------
根据执行计划,具体情况具体分析,比如小表建索引一句sql快0.01s,但是跟着大表,要运行一千万次,那也很可观。
如果建索引后不影响预期的执行计划,也没什么影响,那就无所谓。
------解决方案--------------------
1、如果表足够小,access table full ,读几个块就可以将小表搞定的话,就没有必要建立外键之外的索引。
2、如果小表中的单行数据量非常大的话,建立一个索引还是有必要的。
3、如果小表是有外键约束的话,建立一个索引也是有必要的,这里并不是为了提高查询效率,而是为了避免锁。
4、如果小标本身仅仅是查询,更新很少,或者没有更新,比如是系统中的一个参数表的话,可以考虑将其建立为一个索引组织表。
5、一张大表和一张小表,Oracle一般会倾向于使用NL的连接方式,通常将小表作为LEADING表,有必要根据小标的连接条件,在大表中建立相应的索引,或者根据实际情况建立组合索引。