• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Prayer

            在一般中尋求卓越
            posts - 1256, comments - 190, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            sqlserver,oracle和DB2的臨時表概述

            Posted on 2010-05-13 22:57 Prayer 閱讀(188) 評論(0)  編輯 收藏 引用 所屬分類: DB2

            MS SQLSERVER

            SQL Server 支持臨時表。臨時表就是那些名稱以井號 (#) 開頭的表。如果當用戶斷開連接時沒有除去臨時表,SQL Server 將自動除去臨時表。臨時表不存儲在當前數(shù)據(jù)庫內(nèi),而是存儲在系統(tǒng)數(shù)據(jù)庫 tempdb 內(nèi)。

            臨時表有兩種類型:

            本地臨時表:本地臨時表的名稱以單個數(shù)字符號 (#) 打頭;它們僅對當前的用戶連接是可見的;當用戶從 Microsoft SQL Server 2000 實例斷開連接時被刪除。

            全局臨時表:全局臨時表的名稱以數(shù)學(xué)符號 (##) 打頭,創(chuàng)建后對任何用戶都是可見的。如果在創(chuàng)建全局臨時表的連接斷開前沒有顯式地除去這些表,那么只要所有其它任務(wù)停止引用它們,這些表即被除去。當創(chuàng)建全局臨時表的連接斷開后,新的任務(wù)不能再引用它們。當前的語句一執(zhí)行完,任務(wù)與表之間的關(guān)聯(lián)即被除去;因此通常情況下,只要創(chuàng)建全局臨時表的連接斷開,全局臨時表即被除去。


            例如,如果創(chuàng)建名為 employees 的表,則任何人只要在數(shù)據(jù)庫中有使用該表的安全權(quán)限就可以使用該表,除非它已刪除。如果創(chuàng)建名為 #employees 的本地臨時表,只有您能對該表執(zhí)行操作且在斷開連接時該表刪除。如果創(chuàng)建名為 ##employees 的全局臨時表,數(shù)據(jù)表中的任何用戶均可對該表執(zhí)行操作。如果該表在您創(chuàng)建后沒有其他用戶使用,則當您斷開連接時該表刪除。如果該表在您創(chuàng)建后有其他用戶使用,則 SQL Server在所有用戶斷開連接后刪除該表。

            現(xiàn)在,臨時表的許多傳統(tǒng)用途可由具有 table 數(shù)據(jù)類型的變量替換。

             

             

            ORACLE

            Oracle支持臨時表。臨時表用來保存事務(wù)或會話期間的中間結(jié)果。在臨時表中保存的數(shù)據(jù)只有對當前會話是可見的,任何會話都不能看到其他會話的數(shù)據(jù),即使在當前會話COMMIT數(shù)據(jù)以后也是不可見的。多用戶并行不是問題,一個會話從來不阻塞另一個會話使用臨時表。即使鎖定臨時表,一個會話也不會阻塞其他會話使用臨時表。臨時表比正常表產(chǎn)生的REDO少得多,然而,由于臨時表必須產(chǎn)生包含數(shù)據(jù)的UNDO信息,所以會產(chǎn)生一定數(shù)量的REDO日志。

            臨時表將從用戶臨時表空間中分配空間,或者如果從有定義權(quán)的程序中訪問,將使用程序所有者的臨時表空間。全局臨時表實際上只是表本身的模板。創(chuàng)建臨時表的行為不包括存儲空間的分配,也不包括INITIAL的分配。因此,在運行時當一個會話首先將數(shù)據(jù)放到臨時表中時,這時將創(chuàng)建這個會話的臨時段。由于每個會話獲取自己的臨時段,每個用戶可能在不同的表空間中為臨時表分配空間。USER1default臨時表空間為TEMP1,他的臨時表將從TEMP1中分配空間,USER2default臨時表空間為TEMP2,他的臨時表將從TEMP2中分配空間。

            臨時表在每個數(shù)據(jù)庫中只需創(chuàng)建一次,不必在每個存儲過程中創(chuàng)建。臨時表總是存在的,除非手動的刪除他。臨時表作為對象存在數(shù)據(jù)字典中,并且總是保持為空,直到有會話在其中放入數(shù)據(jù)。Oracle允許創(chuàng)建基于臨時表的視圖和存儲過程。

            臨時表可以是以會話為基礎(chǔ)的,也可以是以事務(wù)為基礎(chǔ)的。ON COMMIT PRESERVE ROWS子句使臨時表成為基于會話的模式。行將留在此表中,直到會話斷開或通過DELETETRUNCATE從物理上刪除這些行。ON COMMIT DELETE ROWS子句使臨時表成為基于事務(wù)的模式。當會話提交后,行消失。這個臨時表的自動清除過程不會有額外的開銷。

            oracle中,應(yīng)用程序需要的臨時表應(yīng)該在程序安裝時創(chuàng)建,而不是在程序運行時創(chuàng)建。(這是與ms sqlserversybase的使用的不同)

            在任何數(shù)據(jù)庫中,臨時表的一個缺點是:事實上優(yōu)化器在臨時表中沒有真正的統(tǒng)計功能。然而,在oracle中,一系列較好的統(tǒng)計猜測可以通過DBMS_STATS包在臨時表中設(shè)置。

             

             

            DB2

            可使用 DECLARE GLOBAL TEMPORARY TABLE 語句來定義臨時表。DB2的臨時表是基于會話的,且在會話之間是隔離的。當會話結(jié)束時,臨時表的數(shù)據(jù)被刪除,臨時表被隱式卸下。對臨時表的定義不會在SYSCAT.TABLES中出現(xiàn)

            下面是定義臨時表的一個示例:

               DECLARE GLOBAL TEMPORARY TABLE gbl_temp
                  LIKE empltabl
                  ON COMMIT DELETE ROWS
                  NOT LOGGED
                  IN usr_tbsp

            此語句創(chuàng)建一個名為 gbl_temp 的用戶臨時表。定義此用戶臨時表 所使用的列的名稱和說明與 empltabl 的列的名稱和說明完全相同。隱式定義 只包括列名、數(shù)據(jù)類型、可為空特性和列缺省值屬性。未定義所有其他列屬性,包括唯一約束、外部關(guān)鍵字約束、觸發(fā)器和索引。執(zhí)行 COMMIT 操作時, 若未對該表打開 WITH HOLD 游標,則該表中的所有數(shù)據(jù)都被刪除。不記錄 對用戶臨時表所作的更改。用戶臨時表被放在指定的用戶臨時表空間中。此表空間必須存在,否則此表的聲明將失敗。

            戶定義臨時表不支持:

            • LOB 類型的列(或基于 LOB 的單值類型列)
            • 用戶定義類型列
            • LONG VARCHAR
            • DATALINK
            久久久噜噜噜久久中文福利| 久久精品国产色蜜蜜麻豆| 亚洲中文久久精品无码ww16| 亚洲国产欧洲综合997久久| 久久久久无码精品国产| 国产激情久久久久影院老熟女免费| 777米奇久久最新地址| 亚洲国产成人久久精品影视| 日本欧美国产精品第一页久久| 偷窥少妇久久久久久久久| 人人狠狠综合久久88成人| 草草久久久无码国产专区| 久久天天躁狠狠躁夜夜躁2014 | 久久人人爽人人爽人人av东京热 | 久久人人爽人人爽人人片AV高清 | 色综合久久中文字幕无码| 久久精品9988| 精品一区二区久久| 成人久久免费网站| 欧美性猛交xxxx免费看久久久| 久久er99热精品一区二区| 欧美日韩精品久久久免费观看| 久久精品国产秦先生| 亚洲AV无码久久精品成人| 噜噜噜色噜噜噜久久| 九九热久久免费视频| 久久精品国产福利国产秒| 久久久久久久久无码精品亚洲日韩 | 国产精品久久久久aaaa| 亚洲欧美日韩中文久久| 久久久久久国产精品无码下载| 久久AAAA片一区二区| 国内精品伊人久久久久网站| 国产V亚洲V天堂无码久久久| 久久久久久国产精品无码下载| 久久综合亚洲色HEZYO国产| 久久精品国产99国产精品| 99久久国产综合精品成人影院| 99国产欧美精品久久久蜜芽| 综合久久国产九一剧情麻豆 | 狠狠色噜噜狠狠狠狠狠色综合久久|