資料庫表--index clustered table
cluster指一個或多個表組成的組,這些表物理的儲存在相同的資料塊上,有相同聚簇鍵值的所有行相鄰的物理儲存。第一,多個表物理的儲存在一起,多個表資料儲存到同一個資料塊上;第二,包含相同聚簇鍵值的所有資料會物理的儲存在一起。聚簇鍵使用B*樹索引建立
--先建立一個聚族
CREATE CLUSTER emp_dept_cluster(deptno number(6))SIZE 1024;
--在聚簇上建立索引
CREATE INDEX emp_dept_cluster_index ON CLUSTER emp_dept_cluster;
--建立表
CREATE TABLE dept1(
deptno NUMBER(6) PRIMARY KEY,
dname VARCHAR2(50)
)CLUSTER emp_dept_cluster(deptno);
CREATE TABLE emp1(
empno NUMBER PRIMARY KEY,
ename VARCHAR2(50),
sal NUMBER(5,2),
deptno NUMBER(6),
FOREIGN KEY(deptno) REFERENCES dept1(deptno)
)CLUSTER emp_dept_cluster(deptno);
這樣可以讓兩個表同時用上聚簇索引。一個表只能有一個聚簇索引,但是一個聚簇索引可以包含多個列,稱為組合索引
什麼時候適合是用索引聚簇表:
· 資料主要用於讀(這並不表示“從來不寫”;聚簇表完全可以修改),而且要透過索引來讀(可以是聚簇鍵索引,也可以是聚簇表上的其他索引)
· 需要頻繁地把邏輯上相關而且總是一起使用的表資訊聯結在一起
什麼時候不適合使用聚簇表:
· 如果預料到聚簇中的表會大量修改。索引聚簇會對DML的效能產生某種負面影響。
· 如果需要對聚簇中的某個表執行全表掃描。全表掃描不只是讀取了需要的某個表中的資料,還讀取了其它的多個表中的資料,全表掃描耗時更久。
· 如果需要頻繁地TRUNCATE和載入表。聚簇中的表不能截除,因為聚簇在一個塊上儲存了多個表,必須刪除聚簇表中的行。
· 如果需要對錶進行分割槽。聚簇中的表不能被分割槽。聚簇本身也不能被分割槽
利用聚簇表可以物理的預聯接資料。使用聚簇可以把多個表上的相關資料儲存在同一個資料塊上。聚簇有助於完成總是把資料聯接在一起或訪問相關資料集的讀密集型操作。聚簇表可以減少Oracle必須快取的塊數,提高緩衝區快取的效率。不好的一面是,除非你能正確的計算出size引數設定,否則聚簇在空間利用方面可能效率低下,而且可能會使有大量DML的操作變慢。
--先建立一個聚族
CREATE CLUSTER emp_dept_cluster(deptno number(6))SIZE 1024;
--在聚簇上建立索引
CREATE INDEX emp_dept_cluster_index ON CLUSTER emp_dept_cluster;
--建立表
CREATE TABLE dept1(
deptno NUMBER(6) PRIMARY KEY,
dname VARCHAR2(50)
)CLUSTER emp_dept_cluster(deptno);
CREATE TABLE emp1(
empno NUMBER PRIMARY KEY,
ename VARCHAR2(50),
sal NUMBER(5,2),
deptno NUMBER(6),
FOREIGN KEY(deptno) REFERENCES dept1(deptno)
)CLUSTER emp_dept_cluster(deptno);
這樣可以讓兩個表同時用上聚簇索引。一個表只能有一個聚簇索引,但是一個聚簇索引可以包含多個列,稱為組合索引
什麼時候適合是用索引聚簇表:
· 資料主要用於讀(這並不表示“從來不寫”;聚簇表完全可以修改),而且要透過索引來讀(可以是聚簇鍵索引,也可以是聚簇表上的其他索引)
· 需要頻繁地把邏輯上相關而且總是一起使用的表資訊聯結在一起
什麼時候不適合使用聚簇表:
· 如果預料到聚簇中的表會大量修改。索引聚簇會對DML的效能產生某種負面影響。
· 如果需要對聚簇中的某個表執行全表掃描。全表掃描不只是讀取了需要的某個表中的資料,還讀取了其它的多個表中的資料,全表掃描耗時更久。
· 如果需要頻繁地TRUNCATE和載入表。聚簇中的表不能截除,因為聚簇在一個塊上儲存了多個表,必須刪除聚簇表中的行。
· 如果需要對錶進行分割槽。聚簇中的表不能被分割槽。聚簇本身也不能被分割槽
利用聚簇表可以物理的預聯接資料。使用聚簇可以把多個表上的相關資料儲存在同一個資料塊上。聚簇有助於完成總是把資料聯接在一起或訪問相關資料集的讀密集型操作。聚簇表可以減少Oracle必須快取的塊數,提高緩衝區快取的效率。不好的一面是,除非你能正確的計算出size引數設定,否則聚簇在空間利用方面可能效率低下,而且可能會使有大量DML的操作變慢。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29337971/viewspace-1062720/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料庫表--hash clustered table資料庫
- 資料庫表--sorted hash clustered table資料庫
- 資料庫表--index organized table資料庫IndexZed
- Clustered Index Scan and Clustered Index SeekIndex
- 簇表及簇表管理(Index clustered tables)Index
- 資料庫表--nested table資料庫
- 資料庫表--temporary table資料庫
- 資料庫表--object table資料庫Object
- 資料庫表--external table資料庫
- 資料庫表--heap organized table資料庫Zed
- ORACLE資料庫Table (index) 分析統計及其生成方式Oracle資料庫Index
- 索引組織表(Index Organizied Table)索引Index
- 查詢使用表空間的TABLE,INDEX,INDEX SUBPARTITIONIndex
- table/index/LOBINDEX遷移表空間Index
- 索引組織表(index organized table ,IOT)索引IndexZed
- Oracle資料庫Table,Index,Database分析統計資料方式總結及注意點(zt)Oracle資料庫IndexDatabase
- 如何更改table及index的表空間Index
- 什麼是Clustered Table,與其他型別的table有何不同型別
- index table (IOT)Index
- 【移動資料】External Table 外部表
- partition table and partition indexIndex
- 【SQL】16 SQL CREATE INDEX 語句、 撤銷索引、撤銷表以及撤銷資料庫、ALTER TABLE 語句、AUTO INCREMENT 欄位SQLIndex索引資料庫REM
- TABLE size (including table,index,lob,lobindex)Index
- alter table using indexIndex
- 資料庫 sqlite3_get_table,sqlite3_free_table資料庫SQLite
- 【資料庫資料恢復】Oracle資料庫誤truncate table的資料恢復案例資料庫資料恢復Oracle
- 【資料庫資料恢復】oracle資料庫誤truncate table怎麼恢復資料?資料庫資料恢復Oracle
- 【資料庫資料恢復】誤truncate table的Oracle資料庫資料恢復方案資料庫資料恢復Oracle
- 資料庫升級後‘PLAN_TABLE資料庫
- Drop table時候會徹底刪除index, Truncate 時候會清除index 但是index資料還是保留在HIndex
- 收集full table / index scan sqlIndexSQL
- 建立資料庫表資料庫
- 資料庫分庫分表資料庫
- REORG TABLE命令最佳化資料庫效能資料庫
- javascript: 帶分組資料的Table表頭排序JavaScript排序
- 恢復被執行truncate table的表資料
- CREATE INDEX index1 ON table1(col1)Index
- Oracle資料庫監控Index的使用情況Oracle資料庫Index