--以下测试均在删除emp.deptno外键情况下执行--附件udump.rar为测试报告 每份报告中包含SQL解析过程及执行计划--(每种SQL分为两条 下一条为oracle最后解析执行的SQL)--【假设要查询的部门必须在部门表中存在】--【例如:如果员工表中存在部门编号为10的员工,但是部门表中却不存在编号为10的部门,则结果集中不应该显示部门编号为10的员工相关信息】--第一类要查出必须存在一个部门编号为10的员工的所在部门名称以及员工编码及姓名--五种写法--第一种select d.dname, e.empno, e.ename from emp e, dept d where e.deptno = d.deptno and d.deptno = 10;SELECT "D"."DNAME" "DNAME", "E"."EMPNO" "EMPNO", "E"."ENAME" "ENAME" FROM "SCOTT"."EMP" "E", "SCOTT"."DEPT" "D" WHERE "E"."DEPTNO" = 10 AND "D"."DEPTNO" = 10;--第二种select d.dname, e.empno, e.ename from emp e, (select * from dept t where t.deptno = 10) d where e.deptno = d.deptno;SELECT "T"."DNAME" "DNAME", "E"."EMPNO" "EMPNO", "E"."ENAME" "ENAME" FROM "SCOTT"."EMP" "E", "SCOTT"."DEPT" "T" WHERE "E"."DEPTNO" = 10 AND "T"."DEPTNO" = 10;--第三种select d.dname, e.empno, e.ename from emp e, (select t.deptno, t.dname from dept t where t.deptno = 10) d where e.deptno = d.deptno;SELECT "T"."DNAME" "DNAME", "E"."EMPNO" "EMPNO", "E"."ENAME" "ENAME" FROM "SCOTT"."EMP" "E", "SCOTT"."DEPT" "T" WHERE "E"."DEPTNO" = 10 AND "T"."DEPTNO" = 10;--第四种select d.dname, e.empno, e.ename from emp e, dept d where e.deptno = d.deptno and exists (select 1 from dual where e.deptno = 10);SELECT /*+ */ "D"."DNAME" "DNAME", "SYS_ALIAS_1"."EMPNO" "EMPNO", "SYS_ALIAS_1"."ENAME" "ENAME" FROM "SCOTT"."EMP" "SYS_ALIAS_1", "SCOTT"."DEPT" "D" WHERE EXISTS (SELECT /*+ */ 0 FROM "SYS"."DUAL" "DUAL" WHERE "SYS_ALIAS_1"."DEPTNO" = 10) AND "SYS_ALIAS_1"."DEPTNO" = "D"."DEPTNO"--第五种 select d.dname, e.empno, e.ename from emp e, dept d where e.deptno = d.deptno and exists (select 1 from dept t where d.deptno = t.deptno and t.deptno = 10);SELECT "D"."DNAME" "DNAME", "E"."EMPNO" "EMPNO", "E"."ENAME" "ENAME" FROM "SCOTT"."DEPT" "T", "SCOTT"."EMP" "E", "SCOTT"."DEPT" "D" WHERE "T"."DEPTNO" = 10 AND "D"."DEPTNO" = "T"."DEPTNO" AND "E"."DEPTNO" = 10 AND "D"."DEPTNO" = 10;--第二类要查出必须存在一个部门编号为10的员工的员工编码及姓名--四种写法--第一种select e.empno, e.ename from emp e, dept d where e.deptno = d.deptno and d.deptno = 10;SELECT "E"."EMPNO" "EMPNO", "E"."ENAME" "ENAME" FROM "SCOTT"."EMP" "E", "SCOTT"."DEPT" "D" WHERE "E"."DEPTNO" = 10 AND "D"."DEPTNO" = 10;--第二种select e.empno, e.ename from emp e, (select * from dept t where t.deptno = 10) d where e.deptno = d.deptno;SELECT "E"."EMPNO" "EMPNO", "E"."ENAME" "ENAME" FROM "SCOTT"."EMP" "E", "SCOTT"."DEPT" "T" WHERE "E"."DEPTNO" = 10 AND "T"."DEPTNO" = 10;--第三种select e.empno, e.ename from emp e, (select t.deptno from dept t where t.deptno = 10) d where e.deptno = d.deptno;SELECT "E"."EMPNO" "EMPNO", "E"."ENAME" "ENAME" FROM "SCOTT"."EMP" "E", "SCOTT"."DEPT" "T" WHERE "E"."DEPTNO" = 10 AND "T"."DEPTNO" = 10;--第四种select e.empno, e.ename from emp e where e.deptno in (select d.deptno from dept d where d.deptno = 10);SELECT "E"."EMPNO" "EMPNO", "E"."ENAME" "ENAME" FROM "SCOTT"."DEPT" "D", "SCOTT"."EMP" "E" WHERE "D"."DEPTNO" = 10 AND "E"."DEPTNO" = 10;--第五种select e.empno, e.ename from emp e where exists (select 1 from dept d where e.deptno = d.deptno and d.deptno = 10);SELECT "E"."EMPNO" "EMPNO", "E"."ENAME" "ENAME" FROM "SCOTT"."DEPT" "D", "SCOTT"."EMP" "E" WHERE "D"."DEPTNO" = 10 AND "E"."DEPTNO" = 10 AND "E"."DEPTNO" = "D"."DEPTNO";--第一类SQL结论:1,2,3三条SQL效率一样、4,5两条效率相对较低,4最低。--第二类SQL结论:1,2,3,4四条SQL效率一样、5效率最高。
详细解决方案
oracle联接查询SQL性能测试
热度:68 发布时间:2016-05-05 14:21:11.0
相关解决方案
- oracle 分页排序,ssi,该怎么处理
- oracle 最近的时间(而不是前一天的时间) 跪求sql语句 。解决方法
- oracle,该怎么解决
- 在 Hibernate3 查询不到 Oracle 11g 里的记录
- oracle 安装时出现 java tm 异常
- android访问其他数据库(如:oracle、MySql等),希望大家给点建议!解决方案
- oracle 安插 LONG VARCHAR 类型数据
- ORACLE 一条SQL的有关问题
- oracle loadjava如何用
- oracle,该如何处理
- C# + SQL server +oracle QQ交流群142703980解决方法
- 怎么跟踪winform应用程序发送到数据库的sql(oracle、mssql)
- , 每次玩ASP都会遇到一些恶心的有关问题, 这次是:未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项
- 尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运,该怎么解决
- 求解:gridview行值的计算并绑定有关问题(asp.net+oracle)
- Oracle.DataAccess 执行多条sql语句,该如何解决
- VS10连接Oracle的有关问题:"Oracle.DataAccess.Client.OracleConnection"的类型初始值设定项引发错误
- System.Data.OleDb.OleDbException: 未找到 Oracle 客户端和网络组件。
- asp.net oracle 参数化 模糊查询出错,该怎么处理
- Oracle-参数查询有关问题
- oracle,insert 语句插入一条记录后要求,返回主键id値。解决思路
- Oracle 10g下的SQL语句,有点难度.请~[同时向朋友们道歉~]
- 月统计(oracle)解决办法
- 在线紧急等一sql语句(oracle),该怎么处理
- 面试问,为什么jsp+oracle,asp+sql server这样来搭配?该如何处理
- oracle 连接数据库该如何写语句的
- System.Data.OracleClient requires Oracle client software version 8.1.7 or greater
- oracle 防sql注入有关问题!
- 求 Oracle Database Server 'TNS Listener'远路数据投毒漏洞 补丁
- oracle 客户端链接服务端的方式?该如何解决