打印本文 打印本文 关闭窗口 关闭窗口
Oracle常見問題集(三)
作者:武汉SEO闵涛  文章来源:敏韬网  点击数6580  更新时间:2009/4/22 22:05:50  文章录入:mintao  责任编辑:mintao
>

B.EMP_NAME , B.SALARY , B.GRADE

FROM EMP A,EMP B

WHERE A.EMP_NO = 342

AND B.EMP_NO = 291;

注意:

SQL*Plus , SQL*FormsPro*C中重新設置ARRAYSIZE參數, 可以增加每次資料庫訪問的檢索資料量

,建議值爲200

 

8. 使用DECODE函數來減少處理時間

使用DECODE函數可以避免重復掃描相同記錄或重復連接相同的表.

 

例如:

SELECT COUNT(*)SUM(SAL)

FROM EMP

WHERE DEPT_NO = 0020

AND ENAME LIKE ‘SMITH%;

 

SELECT COUNT(*)SUM(SAL)

FROM EMP

WHERE DEPT_NO = 0030

AND ENAME LIKE ‘SMITH%;

 

你可以用DECODE函數高效地得到相同結果

 

SELECT COUNT(DECODE(DEPT_NO,0020,X,NULL)) D0020_COUNT,

COUNT(DECODE(DEPT_NO,0030,X,NULL)) D0030_COUNT,

SUM(DECODE(DEPT_NO,0020,SAL,NULL)) D0020_SAL,

SUM(DECODE(DEPT_NO,0030,SAL,NULL)) D0030_SAL

FROM EMP WHERE ENAME LIKE SMITH%;

 

類似的,DECODE函數也可以運用於GROUP BY ORDER BY子句中.

9. 整合簡單,無關聯的資料庫訪問

 

如果你有幾個簡單的資料庫查詢語句,你可以把它們整合到一個查詢中(即使它們之間沒有關係)

例如:

 

SELECT NAME

FROM EMP

WHERE EMP_NO = 1234;

 

SELECT NAME

FROM DPT

WHERE DPT_NO = 10 ;

 

SELECT NAME

FROM CAT

WHERE CAT_TYPE = RD;

 

上面的3個查詢可以被合併成一個:

 

SELECT E.NAME , D.NAME , C.NAME

FROM CAT C , DPT D , EMP E,DUAL X

WHERE NVL(X,X.DUMMY) = NVL(X,E.ROWID(+))

AND NVL(X,X.DUMMY) = NVL(X,D.ROWID(+))

AND NVL(X,X.DUMMY) = NVL(X,C.ROWID(+))

AND E.EMP_NO(+) = 1234

AND D.DEPT_NO(+) = 10

AND C.CAT_TYPE(+) = RD;

 

(譯者按: 雖然採取這種方法,效率得到提高,但是程式的可讀性大大降低,所以讀者 還是要權衡之間的利弊)

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]  ...  下一页 >> 

打印本文 打印本文 关闭窗口 关闭窗口