<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    瘋狂

    STANDING ON THE SHOULDERS OF GIANTS
    posts - 481, comments - 486, trackbacks - 0, articles - 1
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    Oracle SQL語句處理過程(轉載)

    Posted on 2011-04-28 18:01 瘋狂 閱讀(807) 評論(0)  編輯  收藏 所屬分類: database

         一般來說,數據庫處理SQL都會經過三個過程:分析、執行、返回結果,比如COGNOS ReportNet通過拖放式完成表現層后,還是會自動生成SQL,然后將SQL傳遞到ORACLE進行處理。

    1。分析

    分析是處理SQL語句的第一步,它是SQL語句處理過程較為重要的一步,它又包含幾個方面:

    (1)語法分析,oracel是采用數據庫常用的自底向上的分析方法,包含檢查語法規范,命名規范,它是處理SQL語句中最消耗時間且代價最高的步驟,主要表現在綁定變量和存儲過程等方面:

    A.綁定變量:這也是為什么使用在某種情況下綁定變量方式會比非綁定方式效率和性能高出幾倍,主要是綁定變量只會編譯一次,隨后就會把查詢計劃存儲在一個共享池里,以便以后獲取和重用這個查詢計劃。

    B.存儲過程:存儲過程比一般的SQL語句要快,就是它不用再次編譯,而且還可以利用數據庫里許多特性,使得它的速度會比一般SQL語句快很多

    (2)語義分析,學過編譯原理的都知道,這一步是非常重要的,ORACLE主要是分析SQL語句格式是否正確,各個對象是否存在,以及它是否有足夠的權限執行

    (3)視圖轉換,它會將涉及的視圖的查詢語句轉換為較為簡單的等效連接表達式,有些人認為視圖一定執行速度會比使用表要快,其實不一定的,主要具體情況具體分析,只要把這篇文章真正理解,自己分析是不困難的;

    (4)表達式轉換。將復雜的SQL表達式轉換為相應的對基表的查詢語句。寫SQL的標準

    A.不要再WHERE字句中進行計算,如SELECT AT_ID FROM ARTICLE WHERE AT_ID >10*10000 AND AT_ID<(10+1)*10000是不允許的就是這個原理

    B.注意數據類型的匹配

    SELECT BK_ID FROM BOOK WHERE BK_PRICE>30 就比不上SELECT BK_ID FROM BOOK WHERE BK_PRICE>30.00好啦

    (5)選擇優化器,學過編譯原理時候就知道,使用不用的優化器是會有不同的執行效率,當然,最好是能根據批量的SQL自己編一個特定的優化器

    (6)選擇連接方式。INFORMIX就有簡單的歸并連接 和排序-歸并連接技術之分,主要看是否使用索引的問題。

    (7)選擇連接順序。多表連接,oracle選擇那一個對表先連接,并選擇源數據表

    (8)選擇數據搜索路徑,根據以上條件選擇合適的數據搜蘇路徑,如選用全表搜索還是利用索引或是其他方式搜索

    (9)到SQL中為該SQL語句找到一個共享SQL區,如已經有共享SQL區,則直接執行共享區內容。

    2。執行

       主要在于使用UPDATE和DELETE語句時,必須將行鎖定,以免其他用戶修改。ORACLE先從數據庫緩沖區中尋找是否存在所要的數據塊,如果存在,就直接讀或修改,否則從物理文件中讀到數據庫緩沖區中。

    3。返回結果

       對SELECT 語句需要返回結果的語句,首先看是否需要排序,需要,則排序后返回給用戶,然后根據內存的大小不同,可以一次取出一行數據,一可以一次取一組數據。這時,可能要用到數據結構中的外部排序,并歸排序等算法,所以如內存允許的話,盡量大會提高性能的;

          最后總結一下經用使用的SELECT的處理步驟:

                                          打開游標
                                               |
       ---------查看共享SQL區,是否有相同的SQL語句
       |                                       |
       |                                   分析
       |                                       |
       |                                    定義
      ------------------------         |
                                               |
       ------------------------- 綁定變量
       |                                      |
       |                                   捆綁
       --------------- -----------   |
                                              |
                                      并行處理
                                             |
                                     執行查詢
                                             |
                                       返回結果
                                             |
                                      關閉游標

     

    轉載:http://blog.csdn.net/wonth/archive/2007/05/06/1598446.aspx

    主站蜘蛛池模板: 亚洲国产成人久久综合一区| 成人五级毛片免费播放| 日韩av无码免费播放| 无码区日韩特区永久免费系列| 日本黄色免费观看| 国产亚洲精品影视在线产品| 亚洲一区影音先锋色资源| 国产精品亚洲AV三区| 久久国产乱子免费精品| 性色av极品无码专区亚洲| 小说专区亚洲春色校园| 国产免费不卡v片在线观看| 亚洲精品乱码久久久久久| 亚洲一卡2卡3卡4卡国产网站| AAAAA级少妇高潮大片免费看| 免费无码又爽又高潮视频| 亚洲综合一区二区三区四区五区 | 免费在线观看毛片| 亚洲成AV人在线播放无码| 免费的黄色网页在线免费观看| 亚洲一区二区三区免费在线观看| 四虎影视大全免费入口| 男男gay做爽爽的视频免费| 国产免费的野战视频| 自拍偷自拍亚洲精品被多人伦好爽| 亚洲91精品麻豆国产系列在线 | 日韩毛片免费在线观看| 一区二区三区免费在线观看| 亚洲日韩AV一区二区三区四区| 69xx免费观看视频| 国产精品久久久久久亚洲影视| 国产亚洲人成网站在线观看| 99re热精品视频国产免费| 亚洲一区二区三区四区在线观看| 99久久这里只精品国产免费| 未满十八私人高清免费影院| 18禁超污无遮挡无码免费网站国产| 99久久亚洲精品无码毛片| 成年性午夜免费视频网站不卡| 亚洲砖码砖专无区2023 | a级毛片在线免费|