2011-12-07 73 views
1

我有一個由幾個表繼承了日誌表:在PostgreSQL中使用繼承與幾個孩子可能會降低性能?

CREATE TABLE log (
    IdGlobal uuid NOT NULL DEFAULT uuid_generate_v1(), 
    Version integer NOT NULL DEFAULT 0, 
    ChangeDate TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(), 
    IsDeleted bool DEFAULT false 
); 

CREATE TABLE Customer (
    Id SERIAL PRIMARY KEY, 
    Code text NOT NULL UNIQUE, 
    Name text NOT NULL, 
) INHERITS (log); 

但是,我不知道是否有它將使性能的影響。該數據庫適用於正在開發(早期階段)的SASS應用程序,並且將有1個架構= 1個公司。

我知道postgres的主要優點是關於分區,但我的用例更多地與典型的OOP相關。

從長遠來看,日誌表增加大小會對我造成傷害嗎?我在哪裏放置索引?在父母或孩子的? (我將通過IdGlobal &版進行搜索)

回答

0

日誌表大小不會影響針對Customer表的查詢,實際上是另一種方式:默認情況下,日誌表中的SELECT,UPDATE和DELETE將針對客戶除非你指定ONLY子句,即 SELECT * FROM ON log;

索引和約束(唯一鍵,主鍵和外鍵)僅適用於單個表,而不適用於整個繼承層次結構,因此,不幸的是,您需要分別爲父表和子表創建它們。這也意味着您不能擁有覆蓋層次結構中所有表的唯一索引。