2015-01-16 162 views
3

我使用PostgreSQL 9.3版本來創建數據庫。PostgreSQL中的羣集和非羣集索引

我有一些列列表下面的表測試。

create table test 
(
    cola varchar(10), 
    colb varchar(10), 
    colc varchar(10), 
    cold varchar(10) 
); 

現在我想創建一些列上的索引。

例如:

我想創建一個列colacolb聚集索引。

而我想爲列colccold創建非聚集索引。

正如我所說的thisthis,我知道在PostgreSQL中沒有聚集索引和非聚集索引。

我的問題:我可以使用什麼類型的索引來代替PostgreSQL中的聚簇索引和非聚簇索引,它與聚簇索引和非聚簇索引做同樣的工作嗎?

+0

Postgres中的每個索引都是「非聚簇」的。 Postgres沒有聚集索引。如果你運行'create index',它會創建一個(非聚集的)B-樹索引。你爲什麼認爲沒有非聚集索引? –

+0

@a_horse_with_no_name,好的!我的錯。但我怎樣才能創建聚集索引? – MAK

+0

正如我所說:Postgres沒有聚集索引。所以你不能創建一個。你爲什麼認爲你需要一個? –

回答

11

問題:我可以使用什麼類型的索引來代替PostgreSQL中的聚簇索引和非聚簇索引,它與聚簇索引和非聚簇索引做同樣的工作嗎?

PostgreSQL根本沒有聚簇索引的概念。相反,所有表都是堆表,所有索引都是非聚簇索引。

只需在創建聚集索引時創建非聚集索引即可。

更多細節:

+0

非常感謝。完全滿意的答案。 – MAK

+4

@mak:我也發現Markus這個博客很有趣:http://use-the-index-luke.com/blog/2014-01/unreasonable-defaults-primary-key-clustering-key –

+0

@a_horse_with_no_name,是啊!它是。 – MAK