在awr报告中,发现有个Sql效率很低:

select batch_status from  t_batch_info

where BATCH_STATUS='0'

and sys_id='STM06';

查看执行计划发现查询利用了索引,索引中包含了batch_status字段,但是通过以下sql查询:

select batch_status,count(*) from t_batch_info 
group by BATCH_STATUS

发现batch_status字段的值很少:

batch_status count(*)

0   40350

1   4237357
2   1227
3   433515

之前sql的查询条件是batch_status='0',它只有4万多条数据,而绝大部分都是1,有400多万条数据,因此虽然用到了索引,但是使用效率低,

为解决这个问题,创建了函数索引,利用null值不进索引的特性,

create index ix_t_batch_info  on t_batch_info (decode(BATCH_STATUS,'1',null,'2',null,'3',null,BATCH_STATUS)) online;

而查询语句改成:

select batch_status from  t_batch_info

where decode(BATCH_STATUS,'1',null,'2',null,'3',null,BATCH_STATUS)='0'

and sys_id='STM06';

经过验证,效率提高很多。

转载于:https://www.cnblogs.com/coldsword/p/6121549.html

Oracle Sql优化一例---利用函数索引相关推荐

  1. oracle索引使用例子,Oracle中利用函数索引处理数据倾斜案例

    关于B-Tree.Bitmap.函数索引的相关内容请参考另一篇博文: Oracle中B-Tree.Bitmap和函数索引使用案例总结 通常来说,索引选取的数据列最好为分散度高.选择性好.从索引树结构的 ...

  2. oracle向前推一个小时,oracle SQL里常用的时间函数,经典推荐

    oracle SQL里常用的时间函数,经典推荐 (2009-03-11 23:16:54) 标签: 杂谈 常用日期型函数 1.Sysdate 当前日期和时间 SQL> Select sysdat ...

  3. oracle sql语句加速选项,Oracle SQL优化基本步骤

    本空间日志均为一种学习记录. ----------------该文章无法找到原创出自何处.若有侵范,请告知! 最近有尝试做SQL优化.一直不得要领,请逛到这里的高人提供一些优化实例(最好是有优化历程说 ...

  4. Oracle SQL优化

    1.SQL语句尽量用大写的: 因为oracle总是先解析SQL语句,把小写的字母转换成大写的再执行. 2.使用表的别名: 当在SQL语句中连接多个表时, 尽量使用表的别名并把别名前缀于每个列上.这样一 ...

  5. Oracle SQL 优化原则(实用篇)

    由于SQL优化优化起来比较复杂,并且还受环境限制,在开发过程中,写SQL必须遵循以下几点原则: 1.Oracle 采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他Where ...

  6. Oracle+SQL优化第二弹

    SQL 语句性能优化(未完待续) 要使 Oracle SQL 语句具有最优的性能,需要从多方面进行优化,下面分别进行说明. 1 选用合适的 ORACLE 优化器 ORACLE 的优化器共有 3 种: ...

  7. Oracle SQL优化 总结(大师级别)

    SQL 的优化主要涉及几个方面: (1)    相关的统计信息缺失或者不准确 (2)    索引问题 (3)    SQL 的本身的效率问题,比如使用绑定变量,批量DML 采用bulk等,这个就考验写 ...

  8. oracle sql优化

    (1) 选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表driving table)将被最先处 ...

  9. Oracle SQL优化准则

    (1)选择最有效率的表名顺序(只在基于规则的优化器中有效): Oracle的解析器按照从右到左的顺序处理FROM子句中的表 名,FROM子句中写在最后的表(基础表 driving table)将被最先 ...

  10. oracle sql 优化分析点

    本文来源:http://www.cnblogs.com/quanweiru/archive/2013/05/24/3096781.html (1)     选择最有效率的表名顺序 ( 只在基于规则的优 ...

最新文章

  1. 一种解决hadoop搭建出现的各种问题的简单粗暴的办法
  2. DevExpress的TreeList怎样设置数据源使其显示成单列树形结构
  3. 10大主流压力测试工具推荐(转载)
  4. JavaScript事件详解
  5. SpringBoot 过滤器、拦截器、监听器对比及使用场景!
  6. 机器视觉开源代码集合(转载)
  7. 关于Training deep neural networks for binary communication with the Whetstone method的代码实现
  8. java插件化设计开发
  9. 日志审计与分析实验4-1(掌握Linux下安装、删除软件的方法)
  10. mysql临时表更新_MySql 临时表
  11. 马氏距离 java实现_马氏距离(Mahalanobis Distence) [python]
  12. Rust语言编程实例100题-036
  13. 大淘客cms源码三合一导航,自定义底部导航腰部导航
  14. Python 防止反编译
  15. 知识蒸馏 | 知识蒸馏理论篇
  16. 判断字符串数组能否首尾相连
  17. js 实现繁体和简体之间的转换
  18. java-数组常用api
  19. Unity可视化编程插件bolt1.4.15 (一)bolt下载与安装
  20. C-Lodop提示“网页还没下载完毕,请稍等一下再操作.”

热门文章

  1. 全网AI和机器学习资源大合集(研究机构、视频、博客、书籍...)
  2. 流量一天一个台阶,谈映客直播服务端架构优化之路
  3. 上传本地项目到gitee_使用git将本地代码上传到gitee远程仓库
  4. 图解C#的值类型,引用类型,栈,堆,ref,out
  5. PO、VO、BO、POJO、DAO、DTO都是什么对象
  6. Elasticsearch 健康状态处理
  7. react-native开源组件react-native-wechat学习
  8. 位图切割器位图裁剪器
  9. 安卓CTS官方文档之兼容性方案概览
  10. MySQL创始人发邮件寻求中国帮助