oracle里use_nl的简单用法
use_nl (table1,table2....) 指示指定表作为inner table,如果指定的表已经作为了outer table(驱动表),那么优化器会忽略
use_nl 提示,如果非要强制它作为inner table ,可以与ordered 提示一起使用。
下面以SCOTT测试用户作为试验
SQL> select table_name,last_analyzed from user_tables;
TABLE_NAME LAST_ANALYZED
------------------------------ --------------
DEPT 01-12月-09
EMP 01-12月-09
BONUS 01-12月-09
SALGRADE 01-12月-09
表已经分析过了
SQL> select ename,dept.deptno from dept,emp where dept.deptno=emp.deptno;
已选择14行。
执行计划
----------------------------------------------------------
Plan hash value: 3074306753
------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 14 | 168 | 3 (0)| 00:00:01 |
| 1 | NESTED LOOPS | | 14 | 168 | 3 (0)| 00:00:01 |
| 2 | TABLE ACCESS FULL| EMP | 14 | 126 | 3 (0)| 00:00:01 |
|* 3 | INDEX UNIQUE SCAN| PK_DEPT | 1 | 3 | 0 (0)| 00:00:01 |
------------------------------------------------------------------------------
此处优化器选择emp作为驱动表(outer table),因为dept上有索引,而且索引正好建在连接列上,可见优化器选择是正确的
SQL> select /*+ use_nl(emp) */ ename,dept.deptno from dept,emp where dept.deptno=emp.deptno;
已选择14行。
执行计划
----------------------------------------------------------
Plan hash value: 3074306753
------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 14 | 168 | 3 (0)| 00:00:01 |
| 1 | NESTED LOOPS | | 14 | 168 | 3 (0)| 00:00:01 |
| 2 | TABLE ACCESS FULL| EMP | 14 | 126 | 3 (0)| 00:00:01 |
|* 3 | INDEX UNIQUE SCAN| PK_DEPT | 1 | 3 | 0 (0)| 00:00:01 |
------------------------------------------------------------------------------
由于emp作为outer table,优化器忽略use_nl提示
SQL> select /*+ ordered use_nl(emp) */ ename,dept.deptno from dept,emp where dept.deptno=emp.deptno;
已选择14行。
执行计划
----------------------------------------------------------
Plan hash value: 3566768842
------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 14 | 168 | 7 (0)| 00:00:01 |
| 1 | NESTED LOOPS | | 14 | 168 | 7 (0)| 00:00:01 |
| 2 | INDEX FULL SCAN | PK_DEPT | 4 | 12 | 1 (0)| 00:00:01 |
|* 3 | TABLE ACCESS FULL| EMP | 4 | 36 | 2 (0)| 00:00:01 |
------------------------------------------------------------------------------
可见,现在dept作为了驱动表
oracle里use_nl的简单用法相关推荐
- oracle sql plus 安装教程视频教程,oracle 安装与SQLPLUS简单用法
一 安装oracle数据库成功之后,会显示相关的数据库信息: 全局数据库名:oracle 系统标识符(SID):oracle 服务器参数文件名:c:\oracle\product\10.2.0\db_ ...
- oracle的substr函数用法,Oracle的substr函数简单用法详解
substr(字符串,截取开始位置,截取长度) //返回截取的字 substr('Hello World',0,1) //返回结果为 'H' *从字符串第一个字符开始截取长度为1的字符串 subst ...
- 21-while里的break简单用法
break是结束循环,break之后.循环体内代码不再执行. while True:yn = input('Continue(y/n): ')if yn in ['n','N']:breakprint ...
- html.renderaction 控制器,Html.RenderAction简单用法
CATransition(os开发之画面切换) 的简单用法 CATransition 的简单用法 //引进CATransition 时要添加包"QuartzCore.framework&qu ...
- java中instr函数_Oracle的substr和instr函数简单用法
Oracle的substr函数简单用法 substr(字符串,截取开始位置,截取长度) //返回截取的字 substr('Hello World',0,1) //返回结果为 'H' *从字符串第一个 ...
- Java里try catch的简单用法
Java里try catch的简单用法: Java里try catch的简单用法: 1.try+catch 程序的流程是:运行到try块中,如果有异常抛出,则转到catch块去处理.然后执行catch ...
- java中 try用法,Java里try catch的简单用法
优质回答 回答者:temps1991 Java里try catch的简单用法: 1.try+catch 程序的流程是:运行到try块中,如果有异常抛出,则转到catch块去处理.然后执行catch块后 ...
- oracle pivot使用方法,Oracle Pivot简单用法
因为工作中经常需要excel或者报表输出,了解到pivot函数,查了部分资料,实在不够详尽,便想自己写一篇.pivot了解不深,只写写简单用法. table t{ c1,c2,c3,c4 } 有库表t ...
- bulk怎么使用oracle,oracle学习之bulk collect用法
通过bulk collect减少loop处理的开销,使用Bulk Collect提高Oracle查询效率 Oracle8i中首次引入了Bulk Collect特性,该特性可以让我们在PL/SQL中能使 ...
最新文章
- 跳棋c语言,C/C++跳棋问题
- 通用权限管理系统组件 (GPM - General Permissions Manager) 中实现按部门组织机构设置权限...
- CentOS7 reset脚本,用于初始化新的虚拟机
- canvas实现抽奖插件—大转盘和九宫格
- 通过注册表修改打开方式
- 自学python需要安装什么-Python自学之环境安装
- Docker(包括docker、mysql、tomcat的安装,以及部署web工程文件)
- Backtrack 算法思路
- 电视盒子为啥不安装鸿蒙,电视盒子视频播放不了怎么办?只需三步轻松解决!...
- 浅谈Web身份识别技术 —— Cookie、Session 和 Token
- audio realtek 耳机没声_realtek hd audio output 耳机听歌没声音要咋设置?华硕主板a88xm-a插了耳机音响还响咋了...
- 让机器耳濡目染:MIT提出跨模态机器学习模型
- Cisco Encrypted Traffic Analysis(ETA)
- android mjpg格式,Camera常用格式MJPEG和jpeg-turbo库
- Python数据处理(三)——美国西雅图自行车流量可视化
- Android存储空间及路径总结
- 一个完整简单而又强力的计算器程序--用python实现(Python3.7)
- 金立android怎么升级到7.o,金立手机怎么刷机?只需七步轻松刷机
- 解决input 中 type=“number“右侧上下箭头以及取消默认滚轮事件
- python网页爬虫菜鸟教程_【爬虫】菜鸟教程,支持翻页,存储
热门文章
- 从现网PON口带宽利用率看XGS-PON的适用场景
- 【QA答疑】VRay3.4 for SketchUp2017 三种渲染方式
- Exploratory Social Network Analysis with Pajek(第三版)1-1
- 智慧城市雨污分流监测系统解决方案
- Django入门,制作在线相册管理
- PHP个人相册管理系统源码,实现了相册分类和相册分组,还有相册图片管理,数据库采用mysql,实现了登录注册功能
- 微信小程序 - 商城项目 - 微信授权
- 基于Pygame的TTS功能
- 央视网评:国耻不能忘却 但不应该落井下石
- 2022-06-28 Nginx connect() to xxx.xx.xx.xxx:xxxxx failed (13: Permission denied)