版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第9章管理其他模式對象南京信息工程大學(xué)計算機與軟件學(xué)院教學(xué)目的與要求(1)理解索引的概念、作用及其類型;(2)掌握各種索引的適用場合及其創(chuàng)建、修改過程;(3)掌握視圖的常用操作;(4)了解外部表的概念及操作;(5)理解臨時表的概念及其特點;(6)了解序列的常用操作。9.1索引9.2視圖9.3外部表9.4臨時表9.5序列本章主要內(nèi)容教學(xué)重點與難點(1)索引的作用(2)各類型索引的特點及其適用場合(2)視圖的創(chuàng)建及管理(3)Oracle中臨時表與其他關(guān)系數(shù)據(jù)庫的不同點9.1索引索引是一種可選的數(shù)據(jù)結(jié)構(gòu),在一個表上是否建立索引,這不會對表的使用方法產(chǎn)生任何影響。但是如果在表中的某些字段上建立了索引,這能夠顯著地提高對該表的查詢速度。并且可以在很大程度上減少查詢時的硬盤I/O操作。9.1.1索引基礎(chǔ)如果一個表中包含有很多條記錄,當(dāng)對表執(zhí)行查詢時,必須將所有的記錄一一取出,以便將每一條記錄與查詢條件進行比較,然后再返回滿足條件的記錄。這樣進行操作的時間開銷和I/O開銷都是十分巨大的。這時就可以考慮通過建立索引來減少開銷。索引與表一樣,不僅需要在數(shù)據(jù)字典中保存索引的定義,還需要在表空間中為它分配實際的存儲空間。創(chuàng)建索引時,Oracle會自動在用戶的默認(rèn)表空間或指定的表空間中創(chuàng)建一個索引段,為索引數(shù)據(jù)提供存儲空間。為某個表創(chuàng)建的索引不必和該表保存在同一個表空間中。將索引和對應(yīng)的表分別存放在不同硬盤的不同的表空間中,反而能夠提高查詢的速度(并行訪問)。在創(chuàng)建索引時,Oracle首先對將要建立索引的字段(索引字段)進行排序,然后將排序后的字段值和對應(yīng)記錄的ROWID存儲在索引段中(索引條目)。索引與鍵兩個術(shù)語在許多地方可以互換,但兩者在本質(zhì)上有著明顯的區(qū)別:索引時存儲在數(shù)據(jù)庫中的一種實體結(jié)構(gòu),可以通過SQL語句來操作;而鍵只是一個邏輯上的概念,在Oracle中是與完整性約束相對應(yīng)的。按照所有數(shù)據(jù)的存儲方式可以將索引分為B樹索引、方向鍵索引、位圖索引和基于函數(shù)的索引。按照索引列的個數(shù)又可以分為單列索引和復(fù)合索引。按照索引列的唯一性,又可以分為唯一索引和非唯一索引。9.1.2創(chuàng)建索引建立索引是使用CREATEINDEX語句完成的。一般情況下,建立索引是由表的所有者完成的,如果要以其他用戶身份建立索引,則要求用戶必須具有CREATEANYINDEX系統(tǒng)權(quán)限或者在相應(yīng)表的INDEX對象權(quán)限。(1)B樹索引
B樹索引是Oracle中默認(rèn)的、最常用的索引類型。B樹索引是以B樹結(jié)構(gòu)組織并存放索引數(shù)據(jù)的。默認(rèn)情況下,B樹索引中的數(shù)據(jù)是以升序方式排列的。如果表包含的數(shù)據(jù)非常多,并且經(jīng)常在WHERE子句中引用某列或某幾個列,則應(yīng)該基于該列或該幾個列建立B樹索引。
B樹索引由根塊、分支塊和葉塊3部分組成,其中主要數(shù)據(jù)都集中在葉子結(jié)點。(2)位圖索引索引的作用簡單地說就是能夠通過給定的索引列值,快速地找到對應(yīng)的記錄。在B樹索引中,通過在索引中保存排過序的索引列的值,以及記錄的物理地址ROWID來實現(xiàn)快速查找。但是對于一些特殊的表,B樹索引的效率可能會很低。
B樹索引適用于重復(fù)值很少的列上,而位圖索引適用于重復(fù)值很多、不同值相對固定的列上。位圖索引以位圖值標(biāo)識索引行數(shù)據(jù)。創(chuàng)建位圖索引時,Oracle會基于每個不同值建立一個位圖。當(dāng)行數(shù)據(jù)匹配位圖值時,相應(yīng)位置為1,否則為0。(3)反向鍵索引在Oracle中,系統(tǒng)會自動為表的主鍵列建立索引,這個默認(rèn)的索引是普通的B樹索引。通常,用戶會希望表的主鍵是一個自動增長的序列編號,這樣的列就是所謂的單調(diào)遞增序列編號列。當(dāng)在這種順序遞增的列上建立普通的B樹索引時,如果表的數(shù)據(jù)量非常龐大,將導(dǎo)致索引數(shù)據(jù)分布不均。反向鍵索引是一種特殊類型的B樹索引,在順序遞增列上建立索引時非常有用。反向鍵索引在存儲結(jié)構(gòu)上與常規(guī)的B樹索引相同。然而,如果用戶使用序列在標(biāo)準(zhǔn)輸入新記錄,則反向鍵索引首先反向每個列鍵值的字節(jié),然后在反向后的新數(shù)據(jù)上進行索引。(4)基于函數(shù)的索引用戶在使用Oracle數(shù)據(jù)庫時,最常遇到問題之一就是它對字符大小寫敏感。存在問題:索引不起作用,需要全表搜索?;诤瘮?shù)的索引是常規(guī)的B樹索引,只是它存放的數(shù)據(jù)是由表中的數(shù)據(jù)應(yīng)用函數(shù)后所得到的,而不是表中數(shù)據(jù)本身。9.1.3修改索引修改索引是使用ALTERINDEX命令完成的。一般情況下,修改索引是由索引的所有者完的,如果要以其他用戶身份修改索引,則要求該用戶必須具有ALTERANYINDEX系統(tǒng)權(quán)限或在相應(yīng)表上的INDEX對象權(quán)限。在為表建立索引后,隨著對表不斷進行更新、插入和刪除操作,索引中將會產(chǎn)生越來越多的存儲碎片,這對索引的工作效率會產(chǎn)生負(fù)面影響。這時用戶可以采取兩種方式來清除碎片——合并索引或重建索引。(1)合并索引合并索引只是將B樹中葉子節(jié)點的存儲碎片合并在一起,并不會改變索引的物理組織結(jié)構(gòu)。(2)重建索引重建索引使用ALTERINDEX…REBUILD語句。重建操作不僅可以消除存儲碎片,還可以改變索引的存儲參數(shù)設(shè)置及存儲表空間。創(chuàng)建索引實際上是在指定的表空間中重新建立一個索引,然后刪除原來的索引。9.1.4顯示索引信息通過查詢相應(yīng)的數(shù)據(jù)字典視圖,用戶可以了解索引的各種信息。(1)顯示表的所有索引DBA_INDEXES:數(shù)據(jù)庫的所有索引ALL_INDEXES:當(dāng)然用戶可訪問的所有索引USER_INDEXES:當(dāng)前用戶的索引信息(2)顯示索引列DBA_IND_COLUMNS:數(shù)據(jù)庫所有索引的表列信息ALL_IND_COLUMNS:當(dāng)然用戶可訪問的所有索引的表列信息USER_IND_COLUMNS:當(dāng)前用戶索引的表列信息(3)顯示索引段位置及其大小DBA_SEGMENTS:數(shù)據(jù)庫所有段的詳細(xì)信息USER_SEGMENTS:當(dāng)前用戶段的詳細(xì)信息(4)顯示函數(shù)索引DBA_IND_EXPRESSIONS:數(shù)據(jù)庫所有函數(shù)索引所對應(yīng)的函數(shù)或表達式USER_IND_EXPRESSIONS:當(dāng)前用戶函數(shù)索引所對應(yīng)的函數(shù)或表達式9.1.5刪除索引刪除索引是使用DROPINDEX語句完成的。一般情況下,刪除索引是由索引所有者完成的,如果以其他用戶身份刪除索引,則要求該用戶必須具有DROPANYINDEX系統(tǒng)權(quán)限或在相應(yīng)表上的INDEX對象權(quán)限。通常在如下情況下需要刪除某個索引:該索引不再需要時,應(yīng)該刪除該索引,以釋放其所占用的空間。如果移動了表中的數(shù)據(jù),導(dǎo)致索引中包含過多的存儲碎片,此時需要刪除并重建索引。通過一段時間的監(jiān)視,發(fā)現(xiàn)很少有查詢會使用到該索引。索引的刪除方式與索引創(chuàng)建采用的方式有關(guān)。如果使用CREATEINDEX語句顯式創(chuàng)建的索引,則可以使用DROPINDEX語句刪除。如果索引是定義約束時由Oracle自動創(chuàng)建的,則必須禁用或刪除該約束。此外,刪除一個表時,與該表相關(guān)的索引也會刪除。用戶需要根據(jù)表的實際使用情況限制在表中創(chuàng)建的索引數(shù)量。(維護開銷、更新效率)9.2視圖視圖是一個虛擬表,它由存儲的查詢構(gòu)成,可以將它的輸出看作是一個表。視圖同真實的表一樣,也包含一系列帶有名稱的列和行數(shù)據(jù)。但是,視圖并不在數(shù)據(jù)庫中存儲的數(shù)據(jù)值,其數(shù)據(jù)值是來自定義視圖的查詢語句所引用的表,數(shù)據(jù)庫只在數(shù)據(jù)字典中存儲了視圖的定義信息。視圖可以建立在基本表或其他視圖之上。通過視圖修改數(shù)據(jù)時,實際上就是修改基本表中的數(shù)據(jù);與之相對應(yīng),改變基本表中的數(shù)據(jù)也會反映到由該表組成的視圖中。9.2.1創(chuàng)建視圖創(chuàng)建視圖是使用CREATEVIEW語句完成的。為了在當(dāng)前用戶模式中創(chuàng)建視圖,要求數(shù)據(jù)庫用戶必須具有CREATEVIEW系統(tǒng)權(quán)限;如果要在其他用戶模工中創(chuàng)建視圖,則用戶必須具有CREATEANYVIEW系統(tǒng)權(quán)限。CREATEVIEW<視圖名>[(ALIAS[,ALIAS]…)]AS子查詢
[WICHCHECKOPTION[CONSTRAINT約束名]][WITHREADONLY](1)創(chuàng)建簡單視圖簡單視圖是指基于單個表建立的,不包含任何函數(shù)、表達式和分組數(shù)據(jù)的視圖。(2)創(chuàng)建視圖并定義CHECK約束(3)創(chuàng)建只讀視圖(4)創(chuàng)建復(fù)雜視圖復(fù)雜視圖是指包含函數(shù)、表達式或分組數(shù)據(jù)的視圖,其主要目的是為了簡化查詢操作。需要注意的是,當(dāng)視圖子查詢包含函數(shù)或表達式時,必須為其定義列別名。(5)創(chuàng)建連接視圖連接視圖是指基于多個表所創(chuàng)建的視圖,其主要目的是為了簡化連接查詢。9.2.2管理視圖在創(chuàng)建視圖后,用戶可以對視圖進行管理,主要包括:查看視圖的定義信息、修改視圖定義、重新編譯視圖和刪除視圖。(1)查看視圖定義通過查詢數(shù)據(jù)字典視圖USER_VIEWS,可以獲得視圖的定義信息。(2)修改視圖定義執(zhí)行CREATEORREPLACEVIEW語句。(3)重新編譯視圖視圖創(chuàng)建后,如果用戶修改了視圖所依賴的基本表定義,則該視圖會被標(biāo)記為無效狀態(tài)。當(dāng)用戶訪問視圖時,Oracle會自動重新編譯視圖。用戶也可以使用ALTERVIEW語句手動編譯視圖。(4)刪除視圖當(dāng)視圖不再需要時,用戶可以執(zhí)行DROPVIEW語句刪除視圖。執(zhí)行該語句后,視圖的定義將被刪除,這對視圖內(nèi)所有的數(shù)據(jù)沒有任何影響,它們?nèi)匀淮鎯υ诨颈碇小?.3外部表(*)外部表是表結(jié)構(gòu)被存儲在數(shù)據(jù)字典中,而表數(shù)據(jù)被存放在OS文件中的表。通過使用外部表,不僅可以在數(shù)據(jù)庫中查詢OS文件的數(shù)據(jù),還可以使用INSERT方式將OS文件數(shù)據(jù)裝載到數(shù)據(jù)庫中,從而實現(xiàn)SQL*Loader所提供的功能。建立外部表也是使用CREATETABLE語句來完成的,但建立外部表是必須指定ORGANIZATIONEXTERNAL子句。與建立普通表不同,建立外部表包括兩部分:一部分描述列的數(shù)據(jù)類型,另一部分描述OS文件數(shù)據(jù)與表列的對應(yīng)關(guān)系。9.4臨時表
Oracle的臨時表與其他關(guān)系數(shù)據(jù)庫中的不同,Oracle中的監(jiān)時表是“靜態(tài)”的,也就是說,用戶不需要在每次使用臨時表時重新建立,它與普通的數(shù)據(jù)表一
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年建筑施工安全監(jiān)督合同
- 非專利技術(shù)轉(zhuǎn)讓合同模板
- 辦公室租賃經(jīng)營合同
- 2024年度企業(yè)租賃經(jīng)營合同
- 2024貨物賒欠買賣合同范文
- 2024年度軍事訓(xùn)練裝載機租賃合同
- 出口合作:肉禽類協(xié)議
- 導(dǎo)演與攝影師工作合同模板
- 成都市室內(nèi)裝修工程施工協(xié)議示范
- 2024山林流轉(zhuǎn)合同范文
- 創(chuàng)新創(chuàng)業(yè)實訓(xùn)智慧樹知到期末考試答案章節(jié)答案2024年西安理工大學(xué)
- 2024屆宜賓市九年級語文上學(xué)期期中考試卷附答案解析
- 大學(xué)生國家安全教育智慧樹知到期末考試答案2024年
- 2024繼續(xù)教育《醫(yī)學(xué)科研誠信與醫(yī)學(xué)了研究倫理》答案
- 硫磺安全技術(shù)說明書MSDS
- 第三方破壞事故分析與對策
- 投標(biāo)保證金退付申請書四篇
- 鉆井常用計算公式
- 混凝土澆筑監(jiān)理旁站記錄(完整)
- 創(chuàng)傷的救治流程PPT課件
- 上公司財務(wù)風(fēng)險分析與防范——以蘇寧云商為例
評論
0/150
提交評論