Oracle编程艺术阅读笔记-2

1. 位图索引。
不适合频繁更新的表。因为更新时会锁定位图索引对应的一系列记录,
这样其他用户就会被阻塞。
他不同于B*索引。因为B*索引和记录是一一对应的。 一条索引只有唯一的记录和他对应。
而一条位图索引,则对应着很多条记录,这点详细可以参照位图索引的结构来分析。
所以更新时B*只会锁定他对应的当前记录,而位图索引则会锁定很多条。

2. 函数索引
自定义函数索引时,注意函数需要用determinstic修饰,表明是确定性函数。
对于某一个索引,如果该索引对应列全部为Null,则没有对应的索引生成。
可以只对部分行建立索引,方法是 create index part_index on sample_table
( case column1 when 'N' then 'N' end)。这样只对column1 为N的行建立索引。

3. B*索引
注意索引列的默认类型转化会导致索引无效。
注意 is null 会让索引无效
关于索引列的组合顺序:([color=red]在较高版本中,如11G,不需要考虑这个问题[/color])
1.根据系统索引的使用情况分析:where c1='1' and c2='2'
和 where c2='2' 这样的话索引就应该是 c2 c1的顺序,
这两个查询才能都用到索引。
2. 根据数据的具体情况。如果c1对应的行数较少的话,倾向于c1前导。
因为一是这样可以用到索引压缩。二是因为oracle从6版本开始有了行级锁,这样之前的那种说法“将最具有差别的放在索引的前导”就不成立了。三是在索引为c2 c1的情况下,即使where条件中不包含c1,即 where c1= ‘1’ 时,oracle根据计划,也可能采用此索引进行索引跳跃式扫描。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值