2014-03-24 48 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树中维护表。