資料庫物件 索引,序列,同義詞

2021-04-28 14:36:34 字數 2451 閱讀 5599

索引

oracle伺服器索引時乙個方案物件,它可以通過使用指標來加速對行的檢索。索引可以顯示建立或自動建立。如果在列上沒有索引,則系統會對整個表進行掃瞄。

使用索引可以直接和快速地訪問表中的行。索引的目的是通過使用乙個索引的路徑來快速查詢資料,從而減少必需的磁碟i/o操作。所以你是由oracle伺服器自動使用和維護的。

建立索引

自動建立:如果在表定義中定義了primary key或unique約束,則系統會自動建立乙個唯一索引

手動建立:使用者可以在列上建立非唯一的索引,以加速對行的訪問。

e.g(1) 在表employees的last_name列建立索引

create index emp_last_name_idx  on  employees(last_name);

(2)刪除索引

drop index emp_last_name_idx;

什麼情況下要建立索引?

1.列包含較大範圍的值

2.列包含大量空值

3.在where子句或聯結條件中頻繁使用乙個或多個列

4.表相當大,但是預計多數的查詢檢索的行不到總行數的百分之二至百分之四

什麼情況下不建立索引?

1.表比較小

2.在查詢中不經常使用列作為條件

3.預計多數查詢檢索的行要超過表中總行數的百分之二至百分之四

4.表更新比較頻繁

5.被索引的列將作為表示式的一部分進行使用

e.gscott>create index idx_ename on emp(ename);手動建立索引

scott>select index_name from user_indexes;檢視該使用者建立的索引

scott>select ename,sal from emp where ename='scott';

要想知道上面那條查詢語句走的是索引還是沒有走索引,首先我們開啟監控索引的東西

scott>alter index idx_ename monitoring usage;(監控索引)

sys>select * from object_usage;(系統使用者下檢視索引,檢視object_id=***)

scott>select object_id,object_name from user_objects where object_id=***x;

scott>alter index idx_ename nomonitoring usage;(關閉索引)

scott>drop index idx_ename;(乾掉索引)

序列

序列的使用者建立的資料庫物件,它可以由多個使用者共享,用來生成唯一的整數。

序列的通常用途是建立主鍵值,主鍵值對於每行都必須是唯一的。序列由內部的oracle例行程式生成和遞增(或遞減)。序列號的儲存和生成與表無關,同一序列可以用於多個表。

建立序列

例如,建立乙個名為dept_deptid_seq的序列,將它用作表departments的主鍵,不使用cycle選項。

create sequence dept_deptid_seq

increment by 10

start with 120

maxvalue 9999

nocache

nocycle;

確認序列(檢視user_sequences資料字典)

select sequence_name,min_value,max_value,increment_by,last_number from user_sequences;

刪除序列

drop sequence dept_deptid_seq;

nextval和currval偽例

nextval會返回下乙個可用的序列值。每次被引用時它都會返回乙個唯一的值,即使對於不同的使用者也是這樣。

currval會獲得當前序列值

必須對該序列發出nextval,然後currval才能包含值

使用序列

1)在記憶體中高速緩衝序列值可以更快地訪問那些值

2)當發生以下情況時,序列值會出現間斷:

--發生回退

--系統崩潰

--在其他表中使用了序列

3)如果建立序列時使用了nocache選項,可以通過查詢user_sequences表來檢視下乙個可用的值

同義詞

通過建立同義詞(物件的另乙個名稱)可以簡化對物件的訪問,同義詞可以分為私有的和公有的。

可以通過select * from user_synonyms;來檢視同義詞的資訊

優點:易於引用其他使用者所擁有的表

縮短冗長的物件名

e.gsys>grant create synonym to scott;

scott>create synonym d for dept;

scott>select * from d;

oracle索引 序列 同義詞

索引 序列 同意詞 建立 維護和使用序列 提供有規律的數值 1.建立序列 create sequence dept deptid seq 每次增長的數值 increment by n increment by 10 從哪個值開始 start with n start with 120 最小值 min...

Oracle中的序列,同義詞

oracle中的序列,同義詞 2006年08月18日 星期五 下午 01 51 什麼叫序列 1 定義 僅向前的數字變數 和sql中的自動編號有點像 identity 1,2 2 如何定義乙個序列 格式 create sequence 序列名稱 start with 起始數 increment by ...

oracle中建立序列,同義詞

一.建立序列 1.序列 是oacle提供的用於產生一系列唯一數字的資料庫物件。自動提供唯一的數值 共享物件 主要用於提供主鍵值 將序列值裝入記憶體可以提高訪問效率 2.建立序列的語法 create sequence seq demo 序列名 minvalue 1 最小值 maxvalue 99999...