(1)選擇最有效率的表名順序(只在基于規則的優化器中有效):
ORACLE 的解析器按照從右到左的順序處理FROM子句 " /> 国产亚洲激情在线,国产精品久久久久毛片软件,自由的xxxx在线视频

色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

SQL優化34條

我們要做到不但會寫SQL,還要做到寫出性能優良的SQL,以下為筆者學習、摘錄、并匯總部分資料與大家分享! 
(1)選擇最有效率的表名順序(只在基于規則的優化器中有效): 
ORACLE 的解析器按照從右到左的順序處理FROM子句中的表名,FROM子句中寫在最后的表(基礎表 driving table)將被最先處理,在FROM子句中包含多個表的情況下,你必須選擇記錄條數最少的表作為基礎表。如果有3個以上的表連接查詢, 那就需要選擇交叉表(intersection table)作為基礎表, 交叉表是指那個被其他表所引用的表. 
(2) WHERE子句中的連接順序.: 

ORACLE采用自下而上的順序解析WHERE子句,根據這個原理,表之間的連接必須寫在其他WHERE條件之前, 那些可以過濾掉最大數量記錄的條件必須寫在WHERE子句的末尾. 
(3) SELECT子句中避免使用 ‘ * ‘: 
ORACLE在解析的過程中, 會將'*' 依次轉換成所有的列名, 這個工作是通過查詢數據字典完成的, 這意味著將耗費更多的時間 
(4)減少訪問數據庫的次數: 
ORACLE在內部執行了許多工作: 解析SQL語句, 估算索引的利用率, 綁定變量 , 讀數據塊等; 
(5)      在SQL*Plus , SQL*Forms和Pro*C中重新設置ARRAYSIZE參數, 可以增加每次數據庫訪問的檢索數據量 ,建議值為200 
(6)使用DECODE函數來減少處理時間: 
使用DECODE函數可以避免重復掃描相同記錄或重復連接相同的表. 
(7)整合簡單,無關聯的數據庫訪問: 
如果你有幾個簡單的數據庫查詢語句,你可以把它們整合到一個查詢中(即使它們之間沒有關系) 
(8)刪除重復記錄: 
最高效的刪除重復記錄方法 ( 因為使用了ROWID)例子: 

DELETE  FROM  EMP E  WHERE  E.ROWID > (SELECT MIN(X.ROWID) 
FROM EMP X WHERE X.EMP_NO = E.EMP_NO);

it知識庫SQL優化34條,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 郧西县| 云浮市| 杭锦后旗| 阳江市| 荣成市| 西吉县| 海淀区| 万安县| 射阳县| 塘沽区| 瑞安市| 莲花县| 新泰市| 中宁县| 改则县| 百色市| 刚察县| 大同县| 湘潭市| 盐津县| 海门市| 满洲里市| 怀化市| 晋宁县| 临沭县| 张家口市| 锡林郭勒盟| 青阳县| 中超| 娱乐| 沾化县| 沾益县| 奉节县| 玛多县| 新晃| 温泉县| 运城市| 新巴尔虎右旗| 东乡县| 小金县| 云梦县|