序列(Sequences)
Oracle序列是一個連續(xù)的數(shù)字生成器。序列常用于人為的關(guān)鍵字,或給數(shù)據(jù)行排序否則數(shù)據(jù)行是無序的。像約束一樣,序列只存在于數(shù)據(jù)字典中。序列號可以被設(shè)置為上升、下降,可以沒有限制或重復(fù)使用直到一個限制值。創(chuàng)建序列使用SET SEQUENCE語句。
CREATE SEQUENCE [schema] sequence KEYWORD KEYWORD包括下面的值:
KEYWORD 描述 START WITH 定義序列生成的第一個數(shù)字,缺省為1 INCREMENT BY 定義序列號是上升還是下降,對于一個降序的序列INCREMENT BY為負(fù)值 MINVALUE 定義序列可以生成的最小值,這是降序序列中的限制值。缺省情況下該值為NOMINVALUE,NOMINVALUE,對于升序為1,對于降序為-10E26. MAXVALUE 序列能生成的最大數(shù)字。這是升序序列中的限制值,缺省的MAXVALUE為NOMAXVALUE,NOMAXVALUE,對于升序為10E26,對于降序為-1。 CYCLE 設(shè)置序列值在達(dá)到限制值以后可以重復(fù) NOCYCLE 設(shè)置序列值在達(dá)到限制值以后不能重復(fù),這是缺省設(shè)置。當(dāng)試圖產(chǎn)生MAXVALUE+1的值時,將會產(chǎn)生一個異常 CACHE 定義序列值占據(jù)的內(nèi)存塊的大小,缺省值為20 NOCACHE 在每次序列號產(chǎn)生時強(qiáng)制數(shù)據(jù)字典更新,保證在序列值之間沒有間隔當(dāng)創(chuàng)建序列時,START WITH值必須等于或大于MINVALUE。 刪除序列使用DROP SEQUENCE語句
DROP SEQUENCE sequence_name
索引(INDEXES)
索引是一種可以提高查詢性能的數(shù)據(jù)結(jié)構(gòu),在這一部分我們將討論索引如何提高查詢性能的。ORACLE提供了以下幾種索引:
B-Tree、哈希(hash)、位圖(bitmap)等索引類型 基于原始表的索引 基于函數(shù)的索引 域(Domain)索引
實際應(yīng)用中主要是B-Tree索引和位圖索引,所以我們將集中討論這兩種索引類型。
B-Tree索引
B-Tree索引是最普通的索引,缺省條件下建立的索引就是這種類型的索引。B-Tree索引可以是唯一或非唯一的,可以是單一的(基于一列)或連接的(多列)。B-Tree索引在檢索高基數(shù)數(shù)據(jù)列(高基數(shù)數(shù)據(jù)列是指該列有很多不同的值)時提供了最好的性能。對于取出較小的數(shù)據(jù)B-Tree索引比全表檢索提供了更有效的方法。但當(dāng)檢查的范圍超過表的10%時就不能提高取回數(shù)據(jù)的性能。正如名字所暗示的那樣,B-Tree索引是基于二元樹的,由枝干塊(branch block)和樹葉塊(leaf block)組成,枝干塊包含了索引列(關(guān)鍵字)和另一索引的地址。樹葉塊包含了關(guān)鍵字和給表中每個匹配行的ROWID。
位圖索引
位圖索引主要用于決策支持系統(tǒng)或靜態(tài)數(shù)據(jù),不支持行級鎖定。位圖索引可以是簡單的(單列)也可以是連接的(多列),但在實踐中絕大多數(shù)是簡單的。
位圖索引最好用于低到中群集(cardinality)列,在這些列上多位圖索引可以與AND或OR操作符結(jié)合使用。位圖索引使用位圖作為鍵值,對于表中的每一數(shù)據(jù)行位圖包含了TRUE(1)、FALSE(0)、或NULL值。位圖索引的位圖存放在B-Tree結(jié)構(gòu)的頁節(jié)點中。B-Tree結(jié)構(gòu)使查找位圖非常方便和快速。另外,位圖以一種壓縮格式存放,因此占用的磁盤空間比B-Tree索引要小得多。 同義詞(Synonyms) 對另一個數(shù)據(jù)對象而言同義詞是一個別名。public同義詞是針對所有用戶的,相對而言private同義詞則只針對對象擁有者或被授予權(quán)限的賬戶。在本地數(shù)據(jù)庫中同義詞可以表示表、視圖、序列、程序、函數(shù)或包等數(shù)據(jù)對象,也可以通過鏈接表示另一個數(shù)據(jù)庫的對象。 創(chuàng)建同義詞語法如下: CREATE [PUBLIC] SYNONYM synonym_name FOR [schema.] object[@db_link]; 例: CREATE PUBLIC SYNONYM policies FOR poladm.policies@prod; CREATE SYNONYM plan_table FOR system.plan_table;
|