国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

ORACLE SQL性能優化系列(九)

2024-08-29 13:33:00
字體:
來源:轉載
供稿:網友
17.       使用表的別名(Alias)當在SQL語句中連接多個表時, 請使用表的別名并把別名前綴于每個Column上.這樣一來,就可以減少解析的時間并減少那些由Column歧義引起的語法錯誤.
(譯者注: Column歧義指的是由于SQL中不同的表具有相同的Column名,當SQL語句中出現這個Column時,SQL解析器無法判定這個Column的歸屬)
18.       用EXISTS替代IN
在許多基于基礎表的查詢中,為了滿足一個條件,往往需要對另一個表進行聯接.在這種情況下, 使用EXISTS(或NOT EXISTS)通常將提高查詢的效率.低效:
SELECT *
FROM EMP (基礎表)
WHERE EMPNO > 0
AND DEPTNO IN (SELECT DEPTNO
FROM DEPT
WHERE LOC = ‘MELB’)高效:SELECT * FROM EMP (基礎表)WHERE EMPNO > 0AND EXISTS (SELECT ‘X’ FROM DEPT WHERE DEPT.DEPTNO = EMP.DEPTNOAND LOC = ‘MELB’) (譯者按: 相對來說,用NOT EXISTS替換NOT IN 將更顯著地提高效率,下一節中將指出)
19.       用NOT EXISTS替代NOT IN在子查詢中,NOT IN子句將執行一個內部的排序和合并. 無論在哪種情況下,NOT IN都是最低效的 (因為它對子查詢中的表執行了一個全表遍歷).  為了避免使用NOT IN ,我們可以把它改寫成外連接(Outer Joins)或NOT EXISTS.例如:SELECT …FROM EMPWHERE DEPT_NO NOT IN (SELECT DEPT_NO                          FROM DEPT                          WHERE DEPT_CAT=’A’);
為了提高效率.改寫為:(方法一: 高效)
SELECT ….FROM EMP A,DEPT BWHERE A.DEPT_NO = B.DEPT(+)AND B.DEPT_NO IS NULLAND B.DEPT_CAT(+) = ‘A’(方法二: 最高效)
SELECT ….FROM EMP EWHERE NOT EXISTS (SELECT ‘X’                     FROM DEPT D                    WHERE D.DEPT_NO = E.DEPT_NO                    AND DEPT_CAT = ‘A’);

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 贡觉县| 白山市| 教育| 鄄城县| 高淳县| 新河县| 青海省| 石渠县| 镇安县| 大田县| 葫芦岛市| 嘉峪关市| 凤翔县| 湘潭市| 梅州市| 平舆县| 古交市| 丰台区| 馆陶县| 太仓市| 堆龙德庆县| 石台县| 色达县| 阿瓦提县| 浦东新区| 田阳县| 云南省| 景东| 侯马市| 连城县| 怀来县| 龙岩市| 英超| 故城县| 儋州市| 敦化市| 卓尼县| 仁布县| 天门市| 华阴市| 普格县|