ORACLE join 使用與效能 (+) 是oracle 的写法,并不是标准的sql。 (+)在左边 是右连接,在右边是 左连接。至于效率问题,看一下执行计划就知道了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1.INNER使用 ON 或 WHERE SQL code?123456789select EMP.empid,EMP.empname,EMP.deptno,depart.deptno,depart.locfrom EMP,departwhere EMP.deptno=depart.deptno;與select EMP.empid,EMP.empname,EMP.deptno,depart.deptno,depart.locfrom EMP INNER JOIN departON EMP.deptno=depart.deptno;這2個效能有差嗎?---------2.OUTTER JOIN SQL code?123456789select e.empname, e.deptno, d.depnamefrom emp e, depart dwhere e.deptno(+) = d.deptno and d.deptno = 99;與select e.empname, e.deptno, d.depnamefrom emp e right join depart don e.deptno = d.deptno where d.deptno = 99;两种不同的写法,效率应该没有差别,oracle解析时会对sql进行重写, 可以看一下执行计划3.使用 INNER JOIN 效能 會比 LEFT JOIN 效能好嗎?inner join 效率会比left join 效率高,应为left join 需要对一个表进行全表扫描,不是绝对,根据实际情况 1、2、两组写法效能应该是一样的3、一般情况下inner join 效率会比left join 效率高 推荐用标准写法,不要用ORACLE特有的语法 + ,个人感觉可读性也不太好 您好:想確認一下"inner join 效率会比left join 效率高,应为left join 需要对一个表进行全表扫描,不是绝对,根据实际情况"是說 A inner JOIN B與 A left join B 的情況下, B 需要做 全表掃描 的時候, inner 會比 left join 效率好 嗎?另外,您們都是用PL/SQL DEVELOPER 嗎?因為我用的是 ORACLE SQL DEVELOPER ,他只有查詢後,再按「說明計畫」 你1里面的两个和2里面的两个是没有差别的,只是一个是sql标准,一个oracle自己的,第一次执行效率肯定是一样的。至于左连接和等值自己看下计划里面cost就好了,我自己感觉具体情况可能不一样吧。 您好:我可以理解 具體情況可能會不一樣,不過至少有一個基礎概念,比如說 一般會先考慮INNER JOIN。請想先確定一下 "inner join 效率会比left join 效率高 ...." 這一句話的解釋以及,SQL DEVELOPER 的執行計畫是否 就是「說明計畫」?這與PL/SQL DEVELOPER 所看到的介面是否相同?以及未來該如何看 執行計畫 來分析(先有入門,再談理論與經驗)!謝謝! 不好意思:可以 再明確講一下"請想先確定一下 "inner join 效率会比left join 效率高 ...." 這一句話的解釋 嗎?謝謝! 說明計劃應該就是執行計劃了,explain plan.學習看執行計劃,網上很多資料先看看,主要是各種掃描方式和連接方式以及順序 您好:謝謝,那以下 這一段, 這一解釋正確 嗎?"inner join 效率会比left join 效率高,应为left join 需要对一个表进行全表扫描,不是绝对,根据实际情况"是說 A inner JOIN B與 A left join B 的情況下, B 需要做 全表掃描 的時候, inner 會比 left join 效率好 嗎? 1. 两条语句的性能是完全一样的。2.前者是之前的用法,不过现不建议这样写了,后者是标准的,其他数据库也是这样的。3.两个联接方式并不等价,也就是说查询结果是不一样的,比较性能是没意义。非要比较的话,只能说:在结果集一样的情况下, inner join 性能要好。 现在oracle developer2000还有人再用嘛? oracle11g+win7:ORA-12154: TNS:could not resolve the connect identifier specified 怎么样将一个用户下的表移到另外一个用户下 请教一个困扰我好长时间的问题? Oracle存储过程的例子,把例子运行一遍,你会学到点东西哈!快乐就好!我刚边学边写的。 这样两个表该怎么样进行关联 如何恢复被卸载的数据库实例? 如何建索引比较好? 来鸟问题(在线给分) 格式化问题? 表空间能直接删除么? oracle字符串拼接
SQL code
?
1
2
3
4
5
6
7
8
9
select EMP.empid,EMP.empname,EMP.deptno,
depart.deptno,depart.loc
from EMP,depart
where EMP.deptno=depart.deptno;
與
select EMP.empid,EMP.empname,EMP.deptno,
depart.deptno,depart.loc
from EMP INNER JOIN depart
ON EMP.deptno=depart.deptno;這2個效能有差嗎?---------
2.OUTTER JOIN
SQL code
?
1
2
3
4
5
6
7
8
9
select e.empname, e.deptno, d.depname
from emp e, depart d
where e.deptno(+) = d.deptno
and d.deptno = 99;
與
select e.empname, e.deptno, d.depname
from emp e right join depart d
on e.deptno = d.deptno
where d.deptno = 99;两种不同的写法,效率应该没有差别,oracle解析时会对sql进行重写, 可以看一下执行计划3.使用 INNER JOIN 效能 會比 LEFT JOIN 效能好嗎?
inner join 效率会比left join 效率高,应为left join 需要对一个表进行全表扫描,不是绝对,根据实际情况
3、一般情况下inner join 效率会比left join 效率高
想確認一下"inner join 效率会比left join 效率高,应为left join 需要对一个表进行全表扫描,不是绝对,根据实际情况"
是說 A inner JOIN B
與 A left join B
的情況下, B 需要做 全表掃描 的時候, inner 會比 left join 效率好 嗎?另外,您們都是用PL/SQL DEVELOPER 嗎?
因為我用的是 ORACLE SQL DEVELOPER ,他只有查詢後,再按「說明計畫」
第一次执行效率肯定是一样的。
至于左连接和等值自己看下计划里面cost就好了,我自己感觉具体情况可能不一样吧。
我可以理解 具體情況可能會不一樣,不過至少有一個基礎概念,比如說 一般會先考慮INNER JOIN。請想先確定一下 "inner join 效率会比left join 效率高 ...." 這一句話的解釋以及,SQL DEVELOPER 的執行計畫是否 就是「說明計畫」?
這與PL/SQL DEVELOPER 所看到的介面是否相同?以及未來該如何看 執行計畫 來分析(先有入門,再談理論與經驗)!謝謝!
可以 再明確講一下"請想先確定一下 "inner join 效率会比left join 效率高 ...." 這一句話的解釋 嗎?
謝謝!
學習看執行計劃,網上很多資料先看看,主要是各種掃描方式和連接方式以及順序
謝謝,
那以下 這一段, 這一解釋正確 嗎?
"inner join 效率会比left join 效率高,应为left join 需要对一个表进行全表扫描,不是绝对,根据实际情况"
是說 A inner JOIN B
與 A left join B
的情況下, B 需要做 全表掃描 的時候, inner 會比 left join 效率好 嗎?
2.前者是之前的用法,不过现不建议这样写了,后者是标准的,其他数据库也是这样的。
3.两个联接方式并不等价,也就是说查询结果是不一样的,比较性能是没意义。非要比较的话,只能说:在结果集一样的情况下, inner join 性能要好。