亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        在Oracle數(shù)據(jù)庫中進行索引與約束

        2018-01-01 20:41:50李凡
        科學(xué)與財富 2017年30期
        關(guān)鍵詞:約束

        李凡

        摘 要: 在Oracle數(shù)據(jù)庫中為了優(yōu)化數(shù)據(jù)庫存儲結(jié)構(gòu),提高查詢的效率,很有必要進行數(shù)據(jù)庫的索引與約束設(shè)置,本文就幾種常用的索引與約束進行介紹與探討,結(jié)合大數(shù)據(jù)系統(tǒng)的開發(fā),針對性地提出加強數(shù)據(jù)庫配置的必要性。

        關(guān)鍵詞: Oracle;索引;約束

        一、索引的概念

        索引是Oracle的一個對象,索引中存儲了特定列的排序數(shù)據(jù),實現(xiàn)對表的快速訪問。使用索引可以很快查找到建立索引時列的值所在的行,而不必對表實現(xiàn)全表掃描,所以適當(dāng)?shù)氖褂盟饕梢詼p少磁盤I/O量。

        二、建立索引的方式

        建立索引的方式有很多種,從建立索引到查看索引,通過參數(shù)命令執(zhí)行,常用的索引有以下幾種,大致介紹如下:

        1、B-樹索引:它是Oracle默認的索引類型,位圖索引與反向鍵索引建立在其基礎(chǔ)之上。B-樹索引結(jié)構(gòu)有三個基本組成部分:根節(jié)點、分支結(jié)點和葉子節(jié)點,其中根節(jié)點位于索引結(jié)構(gòu)的最頂端,而葉子節(jié)點位于索引結(jié)構(gòu)的最低端,中間為分支節(jié)點。B-樹索引的特點是平衡性強,不會因為數(shù)據(jù)變更操作影響索引性能。B-樹索引結(jié)構(gòu)圖如下所示。

        2、位圖索引:它是大數(shù)據(jù)支持的索引機制,適用于沒有大量更新任務(wù)的數(shù)據(jù)倉庫,因為位圖索引里的關(guān)聯(lián)數(shù)據(jù)太多,所以有大量數(shù)據(jù)更新時,位圖索引需做大量的更改,系統(tǒng)開銷較大,位圖索引比較適合精確性查找。創(chuàng)建位圖索引的實例如下

        SQL> create bitmap index emp

        2 on emp(job);

        索引已創(chuàng)建。

        3、反向鍵索引:它是指在創(chuàng)建索引的過程中對索引列創(chuàng)建的索引鍵值的字節(jié)反向,以避免查找的無序。使用反向鍵索引使得每個鍵值被顛倒順序,將序列性的鍵值分散開,使得鍵值平衡地保存在葉子節(jié)點中。創(chuàng)建反向鍵索引需要使用REVERSE關(guān)鍵字,實例如下

        SQL> create index emp

        2 on emp(sal) reverse;

        索引已創(chuàng)建。

        4、基于函數(shù)的索引:在用戶查詢數(shù)據(jù)時,如果查詢語句的WHERE字句中有函數(shù)存在,Oracle使用函數(shù)索引將加快查詢速度,基于函數(shù)的索引,使用表的列函數(shù)值作為鍵值建立索引結(jié)構(gòu)。以下是通過UPPER函數(shù)創(chuàng)建基于函數(shù)的索引實例。

        SQL> create index dept

        2 on dept(UPPER(dname));

        索引已創(chuàng)建。

        索引建立后,還需監(jiān)控索引,索引不完整,還要重建索引,索引不用,要刪除索引,這一系列操作,構(gòu)成了索引的體系。

        三、約束的概念

        Oracle引入約束的目的是保證插入表的數(shù)據(jù)滿足一定的要求,這個要求可以理解為業(yè)務(wù)規(guī)則的聲明,約束作為數(shù)據(jù)定義的一部分,所以它是聲明性的,而不是過程性的,這種簡單的業(yè)務(wù)規(guī)則便于編寫代碼與維護。使用約束比在應(yīng)用程序中使用規(guī)則驗證更有效,執(zhí)行速度更快。

        四、約束的分類

        約束按照功能可以分為五種,對于每種的特點大致進行介紹如下。

        1、非空約束:該約束不允許某列為NULL,例如某員工表EMP中,員工號是不允許為空,即要求員工號必須存在且為數(shù)字類型NUMBER,在表EMP的定義過程中已定義了非空約束。通過數(shù)據(jù)字典可以清楚地查詢約束信息。

        2、主鍵約束:該約束和唯一鍵約束很相似,但是主鍵約束不允許插入空值NULL,主鍵唯一標識一個表的記錄,主鍵可以在一列或多列上創(chuàng)建。對于創(chuàng)建主鍵約束,可以通過對該列插入重復(fù)值進行驗證,如果主鍵約束結(jié)果唯一且不能為空,說明約束正確。

        3、唯一約束:該約束要求列的值在表中是唯一的,但是可以插入空值NULL,也就是說表中某列的值不能重復(fù),以確保數(shù)據(jù)的唯一性。數(shù)據(jù)的唯一性在數(shù)據(jù)庫操作中可以避免查找的誤判與數(shù)據(jù)有效性規(guī)則的制定。

        4、條件約束:該約束是比較靈活的一類約束,可以根據(jù)需要對表設(shè)置更多的規(guī)則限制,條件約束說明表中每一行的某列或幾列的數(shù)據(jù)必須滿足的條件。條件約束可以使用一個或多個約束條件,可以在單一條件約束中使用復(fù)合條件,也可以對同一列使用多個條件約束。條件約束的判斷標準是條件約束的返回值,TRUE表示滿足條件,F(xiàn)ALSE表示不滿足條件,拒絕執(zhí)行。條件約束可以在創(chuàng)建表時創(chuàng)建,也可以在表創(chuàng)建完成后對某列創(chuàng)建。

        5、外鍵約束:該約束不僅僅涉及一個表,它還涉及主表和從表,使用外鍵約束使得Oracle可以維護主表和從表之間的引用完整性。簡單地說,如果要插入從表的一行數(shù)據(jù),則某列的值要參考主表中引用參考的值,而不能無限制地插入記錄。

        五、兩者的維護

        索引的維護就是修改索引的各種參數(shù),在維護索引前先需知道當(dāng)前索引的參數(shù)位置,再根據(jù)設(shè)置進行參數(shù)的調(diào)整,以下是索引參數(shù)的修改實例。

        SQL>alter index emp

        2 rebuild

        3 pctfree 30

        4 storage (next 100k);

        通過對pctfree參數(shù)的修改,適當(dāng)增加存儲空間,這樣可以合并索引碎片,維護磁盤空間,有利于系統(tǒng)開銷后的釋放。

        約束的維護包括約束的完整性設(shè)置與約束的更改操作,尤其是刪除約束性操作普遍,該操作隨時進行,要求用戶具有刪除約束的條件并知道約束的名字,一般可以通過數(shù)據(jù)字典USER來查找約束的名字,進而使用DROP指令刪除約束,通過以下實例說明。

        SQL>alter table emp

        2 drop constraint SYS

        通過該指令,刪除表emp的唯一約束。

        六、系統(tǒng)評價

        索引已經(jīng)成為關(guān)系數(shù)據(jù)庫非常重要的部分。它們被用作包含所關(guān)心數(shù)據(jù)的表指針。通過一個索引,能從表中直接找到一個特定的記錄,而不必連續(xù)順序掃描這個表,一次一個地去查找。對于大的表,索引是必要的。當(dāng)然索引需要占物理空間,對表中的數(shù)據(jù)進行增加、刪除和修改的時候,索引也要動態(tài)的維護,降低了數(shù)據(jù)的維護速度。所以并非所有的數(shù)據(jù)庫都以相同的方式使用索引。作為通用規(guī)則,只有當(dāng)經(jīng)常查詢索引列中的數(shù)據(jù)時,才需要在表上創(chuàng)建索引。索引占用磁盤空間,并且降低添加、刪除和更新行的速度。如果應(yīng)用程序非常頻繁地更新數(shù)據(jù)或磁盤空間有限,則可能需要限制索引的數(shù)量。在表較大是在建立索引,表中的數(shù)據(jù)越多,索引的優(yōu)越性越明顯。

        數(shù)據(jù)庫約束是為了保證數(shù)據(jù)的完整性而實現(xiàn)的一套機制,它具體的根據(jù)各個不同的數(shù)據(jù)庫的實現(xiàn)而有不同的工具,所以我們在學(xué)習(xí)約束的時候就會看到域完整性(Domain Integrity)、實體完整性(Entity Integrity)、參照完整性(Referential Integrity)與用戶定義完整性(User-defined Integrity)的不同的約束分類。約束能夠提高Oracle數(shù)據(jù)庫操作的穩(wěn)定性與查詢效率,對于數(shù)據(jù)挖掘等高端操作起到一定的保障作用。

        總之,隨著大數(shù)據(jù)的開發(fā),數(shù)據(jù)庫的優(yōu)化配置也在不斷地進行調(diào)整,索引與約束會深層次地進行改變,以適應(yīng)將來數(shù)據(jù)庫的要求。

        參考文獻

        [1] 魏科科. 基于Oracle數(shù)據(jù)庫的索引優(yōu)化[J]. 電腦知識與技術(shù),2015,10.

        [2] 裘志華. 基于Oracle數(shù)據(jù)庫的完整性約束[J].電子商務(wù),2015,4.

        [3] 劉超,張明安. 基于Oracle數(shù)據(jù)庫系統(tǒng)的研究[J]. 軟件,2016,4.endprint

        猜你喜歡
        約束
        約束離散KP方程族的完全Virasoro對稱
        RN中Schr?dinger-Poisson方程約束極小元的存在性
        基于低頻軟約束的疊前AVA稀疏層反演
        自我約束是一種境界
        公民與法治(2016年8期)2016-05-17 04:11:40
        適當(dāng)放手能讓孩子更好地自我約束
        人生十六七(2015年6期)2015-02-28 13:08:38
        不等式約束下AXA*=B的Hermite最小二乘解
        一本色道久久综合亚洲精品不卡| 两个人看的www中文在线观看| 欧美国产日本高清不卡| 亚洲av国产av综合av| 久国产精品久久精品国产四虎| 在线观看av不卡 一区二区三区| 巨爆中文字幕巨爆区爆乳| 国产精品毛片无遮挡| 性大片免费视频观看| 亚洲av人妖一区二区三区| a级三级三级三级在线视频 | 美女扒开大腿让男人桶| 久久99精品久久水蜜桃| 乱中年女人伦av| 日本最新一区二区三区免费看| 天堂影院久久精品国产午夜18禁 | 夫妻免费无码v看片| 成人国产精品一区二区网站公司 | 又爽又黄又无遮挡网站| 88久久精品无码一区二区毛片| 专区亚洲欧洲日产国码AV| 精品人妻免费看一区二区三区| 久久2020精品免费网站| 蜜桃视频在线观看网址| 欧美男生射精高潮视频网站| 亚洲熟少妇在线播放999| 精品熟女少妇免费久久| 免费的黄网站精品久久| 成人高清在线播放视频| 伊人久久大香线蕉av波多野结衣| 少妇高清精品毛片在线视频| 日产精品一区二区三区| 国产精东一区二区三区| 国产一区二区三区久久悠悠色av| 乱人伦人妻中文字幕无码| 中国精品久久精品三级| 欧美性xxx久久| 国产护士一区二区三区| av综合网男人的天堂| 97成人精品| 日本肥老熟妇在线观看|