当前位置: 首页 > news >正文

一则简单演示样例看Oracle的“无私”健壮性

Oracle的强大之处就在于他能总帮助让你选择正确的运行计划,即使你给了它错误的指示。


实验:

1. 创建測试表


收集统计信息:


创建B树索引:


2. 运行select id from tbl_plan;查看它的运行计划

由于创建了B树索引,正常讲能够从索引中获得id的值,不用全表扫描,但这里使用了全表扫描的方式。


即使使用了HINT,这依然使用的是全表扫描:



原因在于这是个B树索引,不会存储NULL值,虽然这张表没有NULL值。

假设直接从可能包括NULL值的B树索引中查询记录。NULL值不会存储于索引。就会漏一些记录,那么查询结果就会有错,所以Oracle在此并没有选择使用索引扫描,而是进行的全表扫描。


3. 将id字段设为非空

相当于这是一个唯一性索引了。


再运行select id from tbl_plan;:

Oracle选择的是索引高速全扫描,由于id是索引字段,直接从索引中获得值是最高速的方式。


假设是使用了HINT的方式:

这使用的是索引全扫描,不如索引高速全扫描,但至少HINT起到了作用。原因就在于从非空索引中获得值是一种可靠的方式。因此Oracle同意HINT的使用


总结

从上面的简单演示样例能够看到。Oracle总会帮你选择正确的运行计划,即使你将错误的信息给了Oracle。Oracle这样的“无私”的精神值得我们学习。假设我们的应用系统也是这样足够健壮,那就更好了。

相关文章:

  • 忘记Mysql的root密码怎么办?
  • Linux vim 命令
  • [转载]基于TFS实践敏捷-工作项跟踪
  • ODBC CRecordSet访问
  • mysql 常用函数以及常见查询语句
  • 在.Net MVC结构API接口中判断http头信息实现公共的权限验证过滤器示例
  • JAVA生成二维码(zxing)
  • 【源代码】LinkedHashMap源代码剖析
  • Codeforces Gym 100015C City Driving 离线LCA
  • C#中timer类的用法
  • JavaScript基础:数据类型的中的那些少见多怪
  • 负数的二进制表示
  • FreeRADIUS+DaloRADIUS实现PPTP ***高级用户控制+流量控制
  • 利用angular结合translate为项目实现国际化
  • ADT Example
  • Apache Zeppelin在Apache Trafodion上的可视化
  • css的样式优先级
  • Docker 笔记(2):Dockerfile
  • Docker下部署自己的LNMP工作环境
  • ES6之路之模块详解
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • input实现文字超出省略号功能
  • Javascripit类型转换比较那点事儿,双等号(==)
  • Javascript基础之Array数组API
  • Logstash 参考指南(目录)
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • SpiderData 2019年2月25日 DApp数据排行榜
  • vue-cli3搭建项目
  • Vue--数据传输
  • vue学习系列(二)vue-cli
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 当SetTimeout遇到了字符串
  • 检测对象或数组
  • 再次简单明了总结flex布局,一看就懂...
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • # centos7下FFmpeg环境部署记录
  • #{} 和 ${}区别
  • #1015 : KMP算法
  • #每日一题合集#牛客JZ23-JZ33
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (1)(1.13) SiK无线电高级配置(六)
  • (11)MATLAB PCA+SVM 人脸识别
  • (39)STM32——FLASH闪存
  • (7)STL算法之交换赋值
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (差分)胡桃爱原石
  • (第27天)Oracle 数据泵转换分区表
  • (分布式缓存)Redis持久化
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (图)IntelliTrace Tools 跟踪云端程序