Oracle-索引

一、建立索引应该思考的问题

1. 该表的读写比率大小?
  1. 若是查询很少的情况下不宜加索引
  2. 当修改性能要求大于读取性能时间不宜加索引
2. 多大数据量的表应该加索引?
  1. 据经验来说,一般超过10万条就应该考虑索引,但不是绝对的。有些表查询频繁,消耗资源多。应该及时查看进行分析,及时加上应该有的索引,使应用系统跑得轻松。用户会满意。某些表不常使用,就可以缓一缓,看情况和用户反响再决定加不加。因为加了索引相关表的数据的插入和修改都会由于索引的问题额外消耗一些资源。总之这是个权衡效率的问题。可以通过一段时间的观察和试验来取舍
  2. 字段列少的不应加索引
3. 索引应该加在哪些字段上?
  1. 对于类型为image,text,bit等长值不宜加字段
  2. where条件使用较为频繁的字段
  3. 表关联键

二、导致索引失效的情况

  1. where条件中使用or且存在条件全表查询的情况,例如
-- 当name加索引而age没加索引,age>18就会触发全表查询,放弃索引
select * from name>0 or age>18;
  1. like语句以%号开头索引失效(前通配走全表,后通配走索引)
  2. 索引字段使用一般函数、不等于、数学运算、is null、is not null索引会失效,注意对于max、min函数索引任然有效

三、Oracle索引原理复习

  平衡树排序,然后二分法查找

  默认索引创建的是B-tree索引,由根节点、分支节点、叶子节点基础部分组成;叶子节点包含条目直接指向表里的数据行。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xmCQyKXE-1678862307873)(https://github.com/AndreFaby/fabyCloud/blob/master/image/%E7%B4%A2%E5%BC%95-b-%E6%A0%91.jpg?raw=true)]

测试

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值