有效使用索引+索引列上所使用的操作符+避免对唯一索引列使用null+选择复合索引主列...

有效使用索引
1.一般使用索引查询数据比全表扫描效率要高
2.oracle查找执行查询和update语句的最佳路径时,oracle优化器将使用索引
3.使用索引需要消耗额外的存储空间
4.索引需要定期维护,因为当记录增加或者索引列被修改的时候,索引本身也会被修改,这意味着针对每个记录的insert,update,delete操作,需要更多的磁盘I/O,因为索引需要一部分磁盘I/O。所以不必要的索引会影响查询效率。

索引列上所使用的操作符
1对索引列上的操作语句避免使用非操作符,因为非操作符会造成oracle对表进行全表扫描,或者说让索引列失效。
2非操作符:not,!=,<>, !<, !>, not exists, not in, not like等。
注意:
like:
使用 like ‘%1233%’,索引会失效,执行全表扫描
使用 like ‘1233%’,会用范围索引.

避免对唯一索引列使用null
1唯一索引列:该列不能有重复值,但是多个null是可以同时存在,因为oracler认为2个null是不相等的。
2唯一索引列不使用null的原因:
假如唯一索引列有很多个null,因为该列都是空值,所以索引中并不存在这些记录。
所以当where 字句使用is null或is not null,对唯一索引列进行空值比较时,oracle将停止使用该列的唯一索引(因为没有值),导致oracle进行全表扫描。
3索引列中包含null的行都会不被包含在索引中。
4复合索引只要有一个列含有null,那么该列对于复合索引就是无效的。所以设计数据库尽量不要让字段的默认值为null

选择复合索引主列
1复合索引:多个列上创建的索引,多个列的前后顺序会影响查询
2:查询语句时,where 字句的 条件列顺序要与建索引的顺序一致。目的是为了提高效率。
创建复合索引的规则
1可以选择经常在where 字句使用,并且由and 连接的列作为复合索引的索引列
2可以选择where字句使用频率较高的列排在最前面,或者根据需要为其他列创建单独的索引。

案例
这里写图片描述

转载于:https://www.cnblogs.com/feiZhou/p/9344250.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值