加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

设计阶段为表创建索引

(2007-05-15 11:28:30)
分类: Oracle DB

1.在哪些列上建立索引?

先要了解业务需求,总结出应该会按照哪几个字段来进行查询
需要平衡query和DML的需要,常用于(子)查询的表应建立索引
如果一个列具有很低的数据基数,并且或者可具有空值,不应作为索引列

2.建什么样的索引?
B-树索引:
选择性高的字段建立B-树索引最好。如果数据量太大,可考虑把索引分区,在并发情况下通常会表现很好。相当于把一棵很大的B树拆开成了多棵小树。
唯一索引OR组合索引:
对常用SQL语句的where条件中的列建立唯一索引或组合索引,组合条件查询中相应的组合索引更有效
函数索引:
如果where语句中不得不对查询列采用函数查询,如upper函数,最好建立相应函数索引
位图索引:
对于低基数集的列,并包含OR等逻辑运算,考虑用Bitmap索引,对于从大量行的表中返回大量的行时也可以考虑Bitmap索引
但Bitmap索引会影响并发,要避免在有大量并发DML运算的表中使用Bitmap索引

3.建立索引时应该注意些什么
把索引建到不同的表空间中
用统一的extent大小: 五个block的倍数或者tablespace指定的MINIMUM EXTENT的倍数
创建索引考虑用NOLOGGING参数,重建索引的时候也一样
创建索引时INITRANS值应该比相应的table的值高一些

 

0

阅读 收藏 喜欢 打印举报/Report
前一篇:一句德语
后一篇:创建MV样例
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有