oracle 索引选择,如何选择和优化oracle索引?

Oracle文档对索引选择有很好的考虑:

http://download.oracle.com/docs/cd/B28359_01/server.111/b28274/data_acc.htm#PFGRF004

报价:

>考虑在WHERE子句中经常使用的索引键。>考虑经常使用的索引键来连接SQL语句中的表。有关优化连接的更多信息,请参见“使用哈希集群实现性能”一节。>选择具有高选择性的索引键。索引的选择性是表中具有相同索引键值的行的百分比。如果几个行具有相同的值,则索引的选择性是最佳的。注意:Oracle在您使用完整性约束定义的唯一键和主键的键和表达式上自动创建索引或使用现有索引。如果数据分布有偏差,那么索引低选择性列会很有帮助,因此一个或两个值的发生频率远低于其他值。>不要对具有几个不同值的键或表达式使用标准B树索引。这样的键或表达式通常具有差的选择性,因此不优化性能,除非频繁选择的键值比其他键值出现频率更低。在这种情况下,您可以有效地使用位图索引,除非索引频繁修改,如在高并发OLTP应用程序中。>不要对经常修改的列进行索引。修改索引列的UPDATE语句和修改索引表的INSERT和DELETE语句所需的时间比没有索引时要长。这样的SQL语句必须修改索引中的数据以及表中的数据。它们还生成额外的撤消和重做。>不要仅出现在具有函数或运算符的WHERE子句中的索引键。使用除MIN或MAX以外的函数或具有索引键的运算符的WHERE子句不会使使用索引的访问路径(基于函数的索引除外)不可用。>在大量并发INSERT,UPDATE和DELETE语句访问父表和子表的情况下,请考虑对参照完整性约束的外键建立索引。这样的索引允许父表上的UPDATE和DELETE,而不共享锁定子表。>当选择索引密钥时,请考虑查询的性能增益是否值得INSERT,UPDATE和DELETE的性能损失,以及使用存储索引所需的空间。您可能希望通过比较有和没有索引的SQL语句的处理时间来进行实验。您可以使用SQL跟踪工具测量处理时间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值