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

      Oracle臨時表用法

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

      關于Oracle臨時表用法

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

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

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

        臨時表的創建

        創建Oracle 臨時表,可以有兩種類型的臨時表:

        會話級的Oracle臨時表

        事務級的臨時表 。

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

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

        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 的時候,事務級的臨時表也會被自動截斷)。事務級臨時表的創建方法:

        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) 兩中類型臨時表的區別

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

        4 )什么時候使用臨時表

        1 )、當某一個 SQL 語句關聯的表在 2 張及以上,并且和一些小表關聯?梢圆捎脤⒋蟊磉M行分拆并且得到比較小的結果集合存放在臨時表中

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

        3 . 例子:略

        4 .臨時表的不足之處

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

        2 )不支持主外鍵關系

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

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

        創建方法:

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

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

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

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

        功能增強的擴展設計:

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

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

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

        擴展臨時表的優點:

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

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

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

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

      【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發展歷程09-12

      Oracle最新認證07-13

      Oracle認證作用07-31

      Oracle認證簡介07-22

      主站蜘蛛池模板: 久久久久成人精品免费播放网站| 五常市| 亚洲中文字幕在线第二页| 二连浩特市| 久久婷婷是五月综合色狠狠| 精品国产一区二区色老头| 在线视频一区二区三区在线观看 | 中国少妇久久一区二区| 国产69精品一区二区三区| 国产真实乱XXXⅩ视频| 激情五月天俺也去综合网| 精品黑人一区二区三区| 日韩欧美精品有码在线观看| 武宁县| 台山市| 托克逊县| 桃园县| 岳阳县| 鹤峰县| 罗源县| 龙海市| 在线免费av一区二区| 盱眙县| 动漫av纯肉无码av在线播放| 富裕县| 国产精品毛片99久久久久| 亚洲色图在线视频免费观看| 精品无吗国产一区二区三区av| 宁乡县| 阿城市| 亚洲综合自拍偷拍视频| 伊人不卡中文字幕在线一区二区| 南宫市| 国产自在自线午夜精品视频在| 国产品精品久久久久中文| 国产人妖av一级黄片| 国产精品制服一区二区| 亚洲国产不卡av一区二区三区| 久久99中文字幕久久| 日韩免费高清视频网站| 亚洲大尺度动作在线观看一区|