Oracle之索引(Index)執行個體講解 - 基礎
Oracle索引(Index)是關聯式資料庫中用於存放表中每一條記錄位置的一種對象,主要目的是加快資料的讀取速度和資料的完整性檢查。索引的建立是一項技術性要求非常高的工作。
一般在資料庫設計階段就要考慮到如何設計和建立索引。
1. 建立索引
建立索引的文法:
CREATE [UNIQUE] INDEX [schema.] index
ON [schema.] table (column [ASC | DESC], column [ASC | DESC]...)
[CLUSTER schema.cluster]
[INITRANS n]
[MAXTRANS n]
[PCTFREE n]
[STORAGE storage]
[TABLESPACE tablespace]
[NO SORT]
關鍵字說明:
- UNIQUE: 該參數用來指明所建立的索引為唯一索引。
- CLUSTER: 該參數為選擇性參數,用來指定一個聚簇(Hash cluster 不能建立索引)。
- INITRANS, MAXTRANS: 為選擇性參數,指定初始和最大的事務入口數。
- TABLESPACE: 索引的儲存資料表空間。
- STORAGE: 儲存參數。
- PCTFREE: 索引資料區塊閒置百分比。
- NO SORT: 不排序(儲存時就按照升序進行排序,所以這裡指出不再排序)。
樣本:建立一張產品表(tb_product),為該表的product_id列建立索引,以便在使用到該列時提高查詢效率。
create table tb_product
(
product_id number
, product_name varchar2(100)
, product_type varchar2(20)
, product_unit varchar2(50)
, product_unit_price number(10,4)
);
下面代碼用來在product_id列上建立唯一索引:
create unique index product_id_u1 on tb_product(product_id);
2. 修改索引
索引的修改主要由資料庫管理員完成,修改索引主要涉及到修改索引的儲存參數、重建索引、對無用的索引空間進行合并等。
修改索引的文法:
ALTER [UNIQUE] INDEX [user.] index
INITRANS n
MAXTRANS n
REBUILD
[STORAGE <storage>]
說明:
- INITRANS n: 表示一個塊內同時訪問的初始事務的入口數,n為十進位整數。
- MAXTRANS n: 表示一個塊內同時訪問的最大事務入口數,n為十進位整數。
- REBUILD: 表示根據原來的索引結構重建立立索引,也就是重新對錶進行全表掃描以後建立索引資料。
- STORAGE : 表示儲存資料。
樣本:
使用ALTER INDEX語句修改索引參數:
ALTER INDEX product_id_u1 REBUILD STORAGE ( INITIAL 1M NEXT 512K );
使用ALTER INDEX語句修改索引為逆向索引:
ALTER INDEX product_id_u1 REBUILD REVERSE;
使用ALTER INDEX語句合并索引空間:
ALTER INDEX product_id_u1 COALESCE;
3. 刪除索引
可以使用DROP語句刪除索引。
DROP INDEX schema.index;
在CentOS 6.4下安裝Oracle 11gR2(x64)
Oracle 11gR2 在VMWare虛擬機器中安裝步驟
Debian 下 安裝 Oracle 11g XE R2
Oracle效能最佳化 之 共用池