RM新时代国际平台

  • <div id="r605l"></div>
      1. <th id="r605l"></th>
      2. oracle 學(xué)習(xí)筆記之

        本文將要為您介紹的是oracle sql 語句優(yōu)化,教程操作方法:

        (1)選擇最有效率的表名順序(只在基于規(guī)則的優(yōu)化器中有效):

        Oracle的解析器按照從右到左的順序處理FROM子句中的表名,F(xiàn)ROM子句中寫在最后的表(基礎(chǔ)表 driving table)將被最先處理,在FROM子句中包含多個表的情況下,你必須選擇記錄條數(shù)最少的表作為基礎(chǔ)表。如果有3個以上的表連接查詢, 那就需要選擇交叉表(intersection table)作為基礎(chǔ)表, 交叉表是指那個被其他表所引用的表。

        (2)WHERE子句中的連接順序:

        Oracle采用自下而上的順序解析WHERE子句,根據(jù)這個原理,表之間的連接必須寫在其他WHERE條件之前, 那些可以過濾掉最大數(shù)量記錄的條件必須寫在WHERE子句的末尾。

        (3)SELECT子句中避免使用‘*’:

        Oracle在解析的過程中, 會將‘*’依次轉(zhuǎn)換成所有的列名, 這個工作是通過查詢數(shù)據(jù)字典完成的, 這意味著將耗費更多的時間。

        (4)使用DECODE函數(shù)來減少處理時間:

        使用DECODE函數(shù)可以避免重復(fù)掃描相同記錄或重復(fù)連接相同的表。

        (5)整合簡單,無關(guān)聯(lián)的數(shù)據(jù)庫訪問:

        如果你有幾個簡單的數(shù)據(jù)庫查詢語句,你可以把它們整合到一個查詢中(即使它們之間沒有關(guān)系)。

        (6)用TRUNCATE替代DELETE:

        當刪除表中的記錄時,在通常情況下, 回滾段(rollback segments ) 用來存放可以被恢復(fù)的信息. 如果你沒有COMMIT事務(wù),ORACLE會將數(shù)據(jù)恢復(fù)到刪除之前的狀態(tài)(準確地說是恢復(fù)到執(zhí)行刪除命令之前的狀況) 而當運用TRUNCATE時, 回滾段不再存放任何可被恢復(fù)的信息。當命令運行后,數(shù)據(jù)不能被恢復(fù).因此很少的資源被調(diào)用,執(zhí)行時間也會很短。(TRUNCATE只在刪除全表適用,TRUNCATE是DDL不是DML)。

        (7)使用表的別名(Alias):

        當在SQL語句中連接多個表時, 請使用表的別名并把別名前綴于每個Column上。這樣一來,就可以減少解析的時間并減少那些由Column歧義引起的語法錯誤。

        (8)用>=替代>:

        高效:SELECT * FROM EMP WHERE DEPTNO >=4 低效: SELECT * FROM EMP WHERE DEPTNO >3

        兩者的區(qū)別在于,前者DBMS將直接跳到第一個DEPT等于4的記錄而后者將首先定位到DEPTNO=3的記錄并且向前掃描到第一個DEPT大于3的記錄。

        (9)SQL語句用大寫的;因為Oracle總是先解析SQL語句,把小寫的字母轉(zhuǎn)換成大寫的再執(zhí)行。

        (10)用Where子句替換HAVING子句:

        避免使用HAVING子句,HAVING 只會在檢索出所有記錄之后才對結(jié)果集進行過濾。這個處理需要排序,總計等操作。如果能通過WHERE子句限制記錄的數(shù)目,那就能減少這方面的開銷。


        下一篇:ORACLE 常見故障恢復(fù)
        RM新时代国际平台
      3. <div id="r605l"></div>
          1. <th id="r605l"></th>
          2. <div id="r605l"></div>
              1. <th id="r605l"></th>
              2. 新时代RM|国际平台 新时代软件下载 RM新时代官网网址 rm新时代是正规平台 新时代rm平台入口