<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • Oracle臨時表用法

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

    關(guān)于Oracle臨時表用法

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

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

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

      臨時表的創(chuàng)建

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

      會話級的Oracle臨時表

      事務(wù)級的臨時表 。

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

      即兩個不同的SESSION 所插入的數(shù)據(jù)是互不相干的。當某一個SESSION 退出之后臨時表中的數(shù)據(jù)就被截斷(truncate table ,即數(shù)據(jù)清空)了。會話級的臨時表創(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) 事務(wù)級臨時表是指該臨時表與事務(wù)相關(guān),當進行事務(wù)提交或者事務(wù)回滾的時候,Oracle臨時表中的數(shù)據(jù)將自行被截斷,其他的內(nèi)容和會話級的臨時表的一致(包括退出SESSION 的時候,事務(wù)級的臨時表也會被自動截斷)。事務(wù)級臨時表的創(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 ;而事務(wù)級則采用 on commit delete rows ;用法上,會話級別只有當會話結(jié)束臨時表中的數(shù)據(jù)才會被截斷,而且事務(wù)級臨時表則不管是 commit 、 rollback 或者是會話結(jié)束,Oracle臨時表中的數(shù)據(jù)都將被截斷

      4 )什么時候使用臨時表

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

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

      3 . 例子:略

      4 .臨時表的不足之處

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

      2 )不支持主外鍵關(guān)系

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

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

      創(chuàng)建方法:

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

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

      3 、程序?qū)懭霐?shù)據(jù)時,要順便將當前的會話 ID(SessionID) 寫入表中。

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

      功能增強的擴展設(shè)計:

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

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

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

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

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

      2 、支持SDO_GEOMETRY 等lob 數(shù)據(jù)類型。

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

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

    【Oracle臨時表用法】相關(guān)文章:

    Oracle數(shù)據(jù)庫臨時表管理技巧06-15

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

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

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

    Oracle認證:Oracle控制件文件修復(fù)07-27

    Oracle認證:Oracle內(nèi)存結(jié)構(gòu)研究-PGA篇09-22

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

    Oracle最新認證07-13

    Oracle認證作用07-31

    Oracle認證簡介07-22

    主站蜘蛛池模板: 亚洲综合无码精品一区二区三区| 亚洲精品午夜无码专区| 免费精品国自产拍在线播放| 国内精品久久人妻互换| 国产在线观看高清精品| 国产精品高清一区二区人妖| 一本一本久久a久久精品综合麻豆| 亚洲综合国产精品| 国产成人精品AA毛片| 亚洲一日韩欧美中文字幕欧美日韩在线精品一区二 | 精品久久久噜噜噜久久久| 亚洲国产91精品无码专区| 国产精品99爱免费视频| 九九精品成人免费国产片| 国产精品视频色拍拍| 久久精品无码专区免费青青| 一本色道久久88综合日韩精品| 精品乱码久久久久久夜夜嗨| 国产精品小视频免费无限app| 中文精品一卡2卡3卡4卡| 国产精品一久久香蕉国产线看| 国产精品无码一区二区三区电影| 色欲精品国产一区二区三区AV| 久久久久久九九99精品| 精品免费tv久久久久久久| 青青青国产精品一区二区| 无码国产亚洲日韩国精品视频一区二区三区 | 久久精品无码专区免费| 久久久久国产精品| 6一12呦女精品| 精品一区二区三区在线观看视频| 亚洲欧美一级久久精品| 亚洲精品宾馆在线精品酒店| 巨大黑人极品VIDEOS精品| 国产人成精品综合欧美成人| 国产精品人人做人人爽| 丰满人妻熟妇乱又伦精品劲| 999国产精品色在线播放| 99热成人精品免费久久| 亚洲嫩草影院久久精品| 99久久精品久久久久久清纯|