叢集為將關聯緊密的多表依共同鍵值混合儲存同一區塊,透過叢集索引或雜湊函數快速定位。本文詳細說明叢集索引建立流程、雜湊叢集適用場景、兩者選型判斷。
-- 1. 建立叢集(配置空間、定義鍵)
CREATE CLUSTER book_author (title VARCHAR2(100));
-- 2. 建立屬於叢集的表
CREATE TABLE bookshelf (
title VARCHAR2(100) PRIMARY KEY,
publisher VARCHAR2(20),
category VARCHAR2(20)
)
CLUSTER book_author (title);
CREATE TABLE bookshelf_author (
title VARCHAR2(100),
author VARCHAR2(50),
CONSTRAINT fk_title FOREIGN KEY (title) REFERENCES bookshelf(title)
)
CLUSTER book_author (title);
-- 3. **必須**建立叢集索引才能插入資料
CREATE INDEX book_author_idx ON CLUSTER book_author;
插入資料後,相同 title 在叢集中僅存一次,兩表欄位緊鄰,連接查詢零 I/O 成本。
CREATE CLUSTER hash_cluster (id NUMBER)
HASHKEYS 10000 -- 預估唯一鍵值數
SIZE 200; -- 每筆資料預估大小
CREATE TABLE t (id NUMBER PRIMARY KEY, data VARCHAR2(100))
CLUSTER hash_cluster (id);
WHERE id = :x)。TRUNCATE,需 TRUNCATE CLUSTER。REBUILD,需 DROP/CREATE。HASHKEYS 設定過小會大量溢出,建議預留 20~30% 餘量。