索引
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...