2014-03-24 44 views
2

我們怎樣才能加入Postgres的聚集/非聚集索引到唯一約束,在SQL Server相當於腳本如下,我們如何才能實現呢Postgres的如何在postgres中使用具有唯一約束的羣集?

CREATE TABLE tbl1(
col1 int, 
col2 int, 
col3 int, 
CONSTRAINT UK_tbl1 UNIQUE NONCLUSTERED 
(
col1 ASC, 
col2 ASC 
)) 

用於索引唯一約束列可以理解的任何幫助。

+0

詢問[dba.stackexchange.com](http://dba.stackexchange.com)中的存儲參數。我正在投票遷移問題。 –

+1

Postgres沒有聚集索引。所以只需創建一個常規的唯一索引(或唯一約束)。 –

+0

@Clodoaldo Neto我剛剛編輯的問題,這不是必需的postgres,需要羣集幫助 – RAFIQ

回答

1

docs

添加唯一約束將自動創建在約束中,列的列或組的唯一B樹索引 。

+0

感謝您的回覆,確定您的意思是索引是沒有必要的,但如何才能實現集羣? – RAFIQ

2

PostgreSQL沒有「聚簇索引」的概念,因爲MS-SQL使用該術語。我的理解是,在MS-SQL中,「聚簇索引」使表成爲索引導向表,其中整個表是b樹結構化的。 PostgreSQL不能做到這一點。

它可以做僅索引掃描,這工作有點像的掃描覆蓋指數

它也有CLUSTER命令,它按照索引的順序對錶進行一次性排序和重寫。但它沒有保持那個排序。

但是,與MS-SQL的聚簇索引不同,它無法避免存儲表堆,並且無法在B樹中維護表。