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的简单用法相关推荐

  1. oracle sql plus 安装教程视频教程,oracle 安装与SQLPLUS简单用法

    一 安装oracle数据库成功之后,会显示相关的数据库信息: 全局数据库名:oracle 系统标识符(SID):oracle 服务器参数文件名:c:\oracle\product\10.2.0\db_ ...

  2. oracle的substr函数用法,Oracle的substr函数简单用法详解

    substr(字符串,截取开始位置,截取长度) //返回截取的字 substr('Hello World',0,1) //返回结果为 'H'  *从字符串第一个字符开始截取长度为1的字符串 subst ...

  3. 21-while里的break简单用法

    break是结束循环,break之后.循环体内代码不再执行. while True:yn = input('Continue(y/n): ')if yn in ['n','N']:breakprint ...

  4. html.renderaction 控制器,Html.RenderAction简单用法

    CATransition(os开发之画面切换) 的简单用法 CATransition 的简单用法 //引进CATransition 时要添加包"QuartzCore.framework&qu ...

  5. java中instr函数_Oracle的substr和instr函数简单用法

    Oracle的substr函数简单用法 substr(字符串,截取开始位置,截取长度) //返回截取的字 substr('Hello World',0,1) //返回结果为 'H'  *从字符串第一个 ...

  6. Java里try catch的简单用法

    Java里try catch的简单用法: Java里try catch的简单用法: 1.try+catch 程序的流程是:运行到try块中,如果有异常抛出,则转到catch块去处理.然后执行catch ...

  7. java中 try用法,Java里try catch的简单用法

    优质回答 回答者:temps1991 Java里try catch的简单用法: 1.try+catch 程序的流程是:运行到try块中,如果有异常抛出,则转到catch块去处理.然后执行catch块后 ...

  8. oracle pivot使用方法,Oracle Pivot简单用法

    因为工作中经常需要excel或者报表输出,了解到pivot函数,查了部分资料,实在不够详尽,便想自己写一篇.pivot了解不深,只写写简单用法. table t{ c1,c2,c3,c4 } 有库表t ...

  9. bulk怎么使用oracle,oracle学习之bulk collect用法

    通过bulk collect减少loop处理的开销,使用Bulk Collect提高Oracle查询效率 Oracle8i中首次引入了Bulk Collect特性,该特性可以让我们在PL/SQL中能使 ...

最新文章

  1. 跳棋c语言,C/C++跳棋问题
  2. 通用权限管理系统组件 (GPM - General Permissions Manager) 中实现按部门组织机构设置权限...
  3. CentOS7 reset脚本,用于初始化新的虚拟机
  4. canvas实现抽奖插件—大转盘和九宫格
  5. 通过注册表修改打开方式
  6. 自学python需要安装什么-Python自学之环境安装
  7. Docker(包括docker、mysql、tomcat的安装,以及部署web工程文件)
  8. Backtrack 算法思路
  9. 电视盒子为啥不安装鸿蒙,电视盒子视频播放不了怎么办?只需三步轻松解决!...
  10. 浅谈Web身份识别技术 —— Cookie、Session 和 Token
  11. audio realtek 耳机没声_realtek hd audio output 耳机听歌没声音要咋设置?华硕主板a88xm-a插了耳机音响还响咋了...
  12. 让机器耳濡目染:MIT提出跨模态机器学习模型
  13. Cisco Encrypted Traffic Analysis(ETA)
  14. android mjpg格式,Camera常用格式MJPEG和jpeg-turbo库
  15. Python数据处理(三)——美国西雅图自行车流量可视化
  16. Android存储空间及路径总结
  17. 一个完整简单而又强力的计算器程序--用python实现(Python3.7)
  18. 金立android怎么升级到7.o,金立手机怎么刷机?只需七步轻松刷机
  19. 解决input 中 type=“number“右侧上下箭头以及取消默认滚轮事件
  20. python网页爬虫菜鸟教程_【爬虫】菜鸟教程,支持翻页,存储

热门文章

  1. 从现网PON口带宽利用率看XGS-PON的适用场景
  2. 【QA答疑】VRay3.4 for SketchUp2017 三种渲染方式
  3. Exploratory Social Network Analysis with Pajek(第三版)1-1
  4. 智慧城市雨污分流监测系统解决方案
  5. Django入门,制作在线相册管理
  6. PHP个人相册管理系统源码,实现了相册分类和相册分组,还有相册图片管理,数据库采用mysql,实现了登录注册功能
  7. 微信小程序 - 商城项目 - 微信授权
  8. 基于Pygame的TTS功能
  9. 央视网评:国耻不能忘却 但不应该落井下石
  10. 2022-06-28 Nginx connect() to xxx.xx.xx.xxx:xxxxx failed (13: Permission denied)