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中能使 ...
最新文章
- 对gitShell的使用
- HDU 1176 免费馅饼 矩阵取数, dp + 滚动数组
- 这门国产编程语言,确实很棒!
- ASP.NET 2.0 Club Web Site Starter Kit 补丁
- pat1111-1120
- mysql删除记录后id不连续_小水玩转Mysql---Mysql跟踪sql记录
- Spring Boot返回的数据格式是XML 而不是JSON之原因探求的和解决
- 又有好奇心,又能自主学习,这个机器人棒棒哒!
- insert 语句的选择列表包含的项多于插入列表中的项_30 种 MySQL 常用 SQL 查询语句优化方法...
- 【Neo4j】第 1 章:图数据库
- 一点浩然气,千里快哉风
- 为什么tumblr起作用
- 2013年总结-托福备考,减肥成功,微软实习,VMware工作,硕士毕业
- dns被劫持怎么办,什么是dns劫持,有什么方法处理?
- 学习OpenCV3:在空白图片上画虚线
- JwtToken介绍与使用 超详细保姆级教程 内附详细示例代码
- 基于motion视频捕捉软件的树莓派视频拍照系统(图像变化识别+拍照+邮件)
- netlify 部署 github page, 使用https域名
- Office课程习题
- 对象(构造函数)和类(class)
热门文章
- 接口大师v3.8.0版本更新,首页改版+组合套餐+微信登录+独立App
- MATLAB 模型自动化测试
- 聚观早报 | 苹果已开始录制秋季发布会;谷歌将推出高端折叠手机
- 计算全国组织机构代码的校验码(C++)
- 6,虚拟机的复制与克隆总结
- Flask扩展包安装出现错误:Could not find a version that satisfies the requirement ...
- 荧光灯泡换LED灯泡指南
- 边缘计算与雾计算的区别
- (转)火溶CEO王伟峰:Unity3D手机网游开发
- 鼠标右键弹出快捷菜单的实现