<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| 大地资源在线资源免费观看| 亚洲熟妇少妇任你躁在线观看无码| 色窝窝亚洲AV网在线观看| 国产乱子伦精品免费女| 无遮挡呻吟娇喘视频免费播放| 又粗又硬免费毛片| caoporn国产精品免费| 相泽亚洲一区中文字幕| 日韩精品无码免费专区午夜| 亚洲AV无码乱码在线观看裸奔| 久久99青青精品免费观看| 亚洲精品第一国产综合精品| 亚洲人成在线免费观看| 亚洲欧洲日韩国产一区二区三区| 午夜无遮挡羞羞漫画免费| 337P日本欧洲亚洲大胆艺术图| 亚洲精品456播放| 毛片在线全部免费观看| 亚洲精品视频在线播放| 最近中文字幕mv免费高清视频7| 精品国产亚洲AV麻豆 | 亚洲中文字幕久久无码| 国产乱色精品成人免费视频| 久久国产美女免费观看精品| 4480yy私人影院亚洲| 国内外成人免费视频| jizz18免费视频| 亚洲综合小说久久另类区| 成人免费视频88| 久久久免费观成人影院| 亚洲成人黄色网址| 免费人成视频x8x8入口| 污污网站免费观看| 老牛精品亚洲成av人片| 亚洲AV一宅男色影视| 国产精品免费看久久久无码| 久久九九AV免费精品| 亚洲国产成人AV在线播放|