中文字幕在线一区二区在线,久久久精品免费观看国产,无码日日模日日碰夜夜爽,天堂av在线最新版在线,日韩美精品无码一本二本三本,麻豆精品三级国产国语,精品无码AⅤ片,国产区在线观看视频

      Oracle臨時表用法

      時間:2024-05-23 19:30:29 Oracle認證 我要投稿
      • 相關推薦

      關于Oracle臨時表用法

        我們目前所使用的 Oracle 是作為數據庫支撐平臺的實際應用,可以說其數據量還是算的上比較龐大的系統(tǒng),即表的數據量一般情況下都是在百萬級以上的數據量。

        當然在 Oracle 中創(chuàng)建分區(qū)是一種不錯的選擇,但是當你發(fā)現(xiàn)你的應用有多張表關聯(lián)的時候,并且這些表大部分都是比較龐大,而你關聯(lián)的時候發(fā)現(xiàn)其中的某一張或者某幾張表關聯(lián)之后得到的結果集非常小并且查詢得到這個結果集的速度非常快,那么這個時候我考慮在 Oracle 中創(chuàng)建“臨時表”。

        對臨時表的理解:在 Oracle 中創(chuàng)建一張表,這個表不用于其他的什么功能,主要用于自己的軟件系統(tǒng)一些特有功能才用的,而當你用完之后表中的數據就沒用了。 Oracle 的臨時表創(chuàng)建之后基本不占用表空間,如果你沒有指定Oracle臨時表(包括臨時表的索引)存放的表空的時候,你插入到臨時表的數據是存放在 Oracle 系統(tǒng)的臨時表空間中( TEMP )。

        臨時表的創(chuàng)建

        創(chuàng)建Oracle 臨時表,可以有兩種類型的臨時表:

        會話級的Oracle臨時表

        事務級的臨時表 。

        1) 會話級的臨時表因為這這個臨時表中的數據和你的當前會話有關系,當你當前SESSION 不退出的情況下,臨時表中的數據就還存在,而當你退出當前SESSION 的時候,臨時表中的數據就全部沒有了,當然這個時候你如果以另外一個SESSION 登陸的時候是看不到另外一個SESSION 中插入到臨時表中的數據的。

        即兩個不同的SESSION 所插入的數據是互不相干的。當某一個SESSION 退出之后臨時表中的數據就被截斷(truncate table ,即數據清空)了。會話級的臨時表創(chuàng)建方法:

        1.Create Global Temporary Table Table_Name

        2.(Col1 Type1,Col2 Type2...) On Commit Preserve Rows ;

        舉例:

        1.create global temporary table Student

        2.(Stu_id Number(5),

        3.Class_id Number(5),

        4.Stu_Name Varchar2(8),

        5.Stu_Memo varchar2(200)) on Commit Preserve Rows ;

        2) 事務級臨時表是指該臨時表與事務相關,當進行事務提交或者事務回滾的時候,Oracle臨時表中的數據將自行被截斷,其他的內容和會話級的臨時表的一致(包括退出SESSION 的時候,事務級的臨時表也會被自動截斷)。事務級臨時表的創(chuàng)建方法:

        1.Create Global Temporary Table Table_Name

        2.(Col1 Type1,Col2 Type2...) On Commit Delete Rows ;

        舉例:

        1.create global temporary table Classes

        2.(Class_id Number(5),

        3.Class_Name Varchar2(8),

        4.Class_Memo varchar2(200)) on Commit delete Rows ;

        3) 兩中類型臨時表的區(qū)別

        會話級臨時表采用 on commit preserve rows ;而事務級則采用 on commit delete rows ;用法上,會話級別只有當會話結束臨時表中的數據才會被截斷,而且事務級臨時表則不管是 commit 、 rollback 或者是會話結束,Oracle臨時表中的數據都將被截斷

        4 )什么時候使用臨時表

        1 )、當某一個 SQL 語句關聯(lián)的表在 2 張及以上,并且和一些小表關聯(lián)。可以采用將大表進行分拆并且得到比較小的結果集合存放在臨時表中

        2 )、程序執(zhí)行過程中可能需要存放一些臨時的數據,這些數據在整個程序的會話過程中都需要用的等等。

        3 . 例子:略

        4 .臨時表的不足之處

        1 )不支持 lob 對象,這也許是設計者基于運行效率的考慮,但實際應用中確實需要此功能時就無法使用臨時表了。

        2 )不支持主外鍵關系

        所以,由于以上原因,我們可以自己創(chuàng)建Oracle臨時表,以彌補 Oracle 臨時表的不足之處

        具體沒有測試過,不過覺得可行性很強,有時間測試下

        創(chuàng)建方法:

        1 、以常規(guī)表的形式創(chuàng)建臨時數據表的表結構,但要在每一個表的主鍵中加入一個 SessionID 列以區(qū)分不同的會話。(可以有 lob 列和主外鍵)

        2 、寫一個用戶注銷觸發(fā)器,在用戶結束會話的時候刪除本次會話所插入的所有記錄 (SessionID 等于本次會話 ID 的記錄 ) 。

        3 、程序寫入數據時,要順便將當前的會話 ID(SessionID) 寫入表中。

        4 、程序讀取數據時,只讀取與當前會話 ID 相同的記錄即可。

        功能增強的擴展設計:

        1 、可以在數據表上建立一個視圖,視圖對記錄的篩選條件就是當前會話的SessionID 。

        2 、數據表中的SessionID 列可以通過Trigger 實現(xiàn),以實現(xiàn)對應用層的透明性。

        3 、高級用戶可以訪問全局數據,以實現(xiàn)更加復雜的功能。

        擴展臨時表的優(yōu)點:

        1 、實現(xiàn)了與Oracle 的基于會話的Oracle臨時表相同的功能。

        2 、支持SDO_GEOMETRY 等lob 數據類型。

        3 、支持表間的主外鍵連接,且主外鍵連接也是基于會話的。

        4 、高級用戶可以訪問全局數據,以實現(xiàn)更加復雜的功能

      【Oracle臨時表用法】相關文章:

      Oracle數據庫臨時表管理技巧06-15

      Oracle認證:Oracle避免全表掃描方式10-04

      Oracle避免全表掃描方式10-22

      Oracle認證:ORACLE綁定變量BINDPEEKING08-25

      Oracle認證:Oracle控制件文件修復07-27

      Oracle認證:Oracle內存結構研究-PGA篇09-22

      Oracle發(fā)展歷程09-12

      Oracle最新認證07-13

      Oracle認證作用07-31

      Oracle認證簡介07-22

      主站蜘蛛池模板: 亚洲国产色婷婷久久99精品91| 精品丝袜国产在线播放 | 乾安县| 熟女少妇av免费观看| 久久道精品一区二区三区| 在线视频一区二区三区在线观看| 日韩偷拍一区二区三区视频| 久久久免费精品人妻一区二区三区| 亚洲性无码av在线| 中文字幕日韩熟女av| 精品中文字幕日本久久久| 陕西省| 中文字幕国产精品中文字幕| 久九九久视频精品网站| 午夜精品久久久影院av| 国产免费一区二区三区视频在线 | 国产精品白浆视频一区| 99福利影院| 国产人av一区二区三区在线观看 | 波多野无码AV中文专区| 少妇熟女淫荡丰满| 久99久精品免费视频热77| 上饶县| 农安县| 激情内射亚洲一区二区| 平山县| 国产精品黄片一区二区三区视频 | 久久伊人中文字幕有码久久国产| 天天中文字幕av天天爽| 久久国产亚洲一区二区三区| 国产亚洲人成在线影院| 沙河市| 亚洲中文字幕av天堂| 一本久道久久综合狠狠操 | 男人免费激情视频在线| 激情文学人妻中文字幕| 国产AV秘 无码一区二区三区| 国产精品自拍视频免费| 亚洲性无码av在线| 91免费国产高清在线| 韩国美女av一区二区三区四区|