关于ORACLE创建数据库索引

由于公司电子商务网站平台版本老化,且使用oracle数据库,前期DBA在设计数据库建表结构时候存在一定的问题,对索引的使用不够重视,大致数据的查询比较慢(当然也有一些由于使用hibernate中不够重视[color=red]ORACLE采用自下而上的顺序解 析WHERE子句,根据这个原理,表之间的连接必须写在其他 WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾 等问题[/color]),现从伟大的互联网淘到了如下建议:

1、表的主键、外键必须有索引;

2、数据量超过300的表应该有索引;

3、经常与其他表进行连接的表,在连接字段上应该建立索引;

4、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;

5、索引应该建在选择性高的字段上;

6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;

7、复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替:
A、正确选择复合索引中的主列字段,一般是选择性较好的字段;
B、复合索引的几个字段是否经常同时以AND方式出现在Where子句中?单字段查询是否极少甚至没有?如果是,则可以建立复合索引;否则考虑单字段索引;
C、如果复合索引中包含的字段经常单独出现在Where子句中,则分解为多个单字段索引;
D、如果复合索引所包含的字段超过3个,那么仔细考虑其必要性,考虑减少复合的字段;
[color=red] E、如果既有单字段索引,又有这几个字段上的复合索引,一般可以删除复合索引;
F、在查询语句中,where条件中使用到单字段索引,无论它的位置在哪里都会使用到单字段索引
G、在查询语句中,where条件中出现且仅出现复合索引,只要复合索引表中的第一个字段出现即可成功使用
H、在查询语句中,where条件中既出现到复合索引又出现到单字段索引,如果仅出现复合索引的一个字段,那么oracle一般使用单字段索引,如果正确出现复合索引中的多个字段,那么oracle一般使用复合索引[/color]

8、频繁进行数据操作的表,不要建立太多的索引;

9、删除无用的索引,避免对执行计划造成负面影响;以上是一些普遍的建立索引时的判断依据。一言以蔽之,索引的建立必须慎重,对每个索引的必要性都应该经过仔细分析,要有建立的依据。因为太多的索引与不充分、不正确的索引对性能都毫无益处:在表上建立的每个索引都会增加存储开销,索引对于插入、删除、更新操作也会增加处理上的开销。另外,过多的复合索引,在有单字段索引的情况下,一般都是没有存在价值的;相反,还会降低数据增加删除时的性能,特别是对频繁更新的表来说,负面影响更大。

[color=red]hibernate虽然存在大家喊的这样那样的问题,但是如果合理使用hibernate,夯实基础也没有大家说的那么差,当然互联网还是建议使用ibatis类似的orm framework。[/color]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值