(+) 是oracle 的写法,并不是标准的sql。 
(+)在左边 是右连接,在右边是 左连接。
至于效率问题,看一下执行计划就知道了

解决方案 »

  1.   

    1.INNER使用 ON 或 WHERE 
    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 需要对一个表进行全表扫描,不是绝对,根据实际情况
      

  2.   

    1、2、两组写法效能应该是一样的
    3、一般情况下inner join 效率会比left join 效率高
      

  3.   

    推荐用标准写法,不要用ORACLE特有的语法 + ,个人感觉可读性也不太好
      

  4.   

    您好:
    想確認一下"inner join 效率会比left join 效率高,应为left join 需要对一个表进行全表扫描,不是绝对,根据实际情况"
    是說 A inner JOIN B
    與    A left     join   B 
    的情況下, B 需要做 全表掃描 的時候,  inner 會比 left join 效率好 嗎?另外,您們都是用PL/SQL DEVELOPER 嗎?
    因為我用的是 ORACLE SQL DEVELOPER ,他只有查詢後,再按「說明計畫」
      

  5.   

    你1里面的两个和2里面的两个是没有差别的,只是一个是sql标准,一个oracle自己的,
    第一次执行效率肯定是一样的。
    至于左连接和等值自己看下计划里面cost就好了,我自己感觉具体情况可能不一样吧。
      

  6.   

    您好:
    我可以理解 具體情況可能會不一樣,不過至少有一個基礎概念,比如說 一般會先考慮INNER JOIN。請想先確定一下 "inner join 效率会比left join 效率高 ...." 這一句話的解釋以及,SQL DEVELOPER 的執行計畫是否 就是「說明計畫」?
    這與PL/SQL DEVELOPER 所看到的介面是否相同?以及未來該如何看 執行計畫 來分析(先有入門,再談理論與經驗)!謝謝!
      

  7.   

    不好意思:
    可以 再明確講一下"請想先確定一下 "inner join 效率会比left join 效率高 ...." 這一句話的解釋 嗎?
    謝謝!
      

  8.   

    說明計劃應該就是執行計劃了,explain plan.
    學習看執行計劃,網上很多資料先看看,主要是各種掃描方式和連接方式以及順序
      

  9.   

    您好:
    謝謝,
    那以下 這一段, 這一解釋正確 嗎?
    "inner join 效率会比left join 效率高,应为left join 需要对一个表进行全表扫描,不是绝对,根据实际情况"
    是說 A inner JOIN B
    與    A left     join   B 
    的情況下, B 需要做 全表掃描 的時候,  inner 會比 left join 效率好 嗎?
      

  10.   

    1. 两条语句的性能是完全一样的。
    2.前者是之前的用法,不过现不建议这样写了,后者是标准的,其他数据库也是这样的。
    3.两个联接方式并不等价,也就是说查询结果是不一样的,比较性能是没意义。非要比较的话,只能说:在结果集一样的情况下, inner join 性能要好。