Postgresql 主鍵定義中列的順序很重要嗎?

Postgresql 主鍵定義中列的順序很重要嗎?

如果需要,Postgresql 允許您使用一組列而不是一個列來定義主鍵,如下所示:

PRIMARY KEY(a_id, b_id)

但是這個定義中的列順序很重要嗎?上述和以下之間是否有任何實際或實際的差異:

PRIMARY KEY(b_id, a_id)

該文檔沒有直接解決這個問題。這意味著順序不應該很重要,並且當我查詢 information_catalog 表時,我沒有看到任何需要注意參數順序差異的內容。

但是,在\d使用備用定義的兩個表上使用該命令以及輸出所描述的列順序確實會發生變化。顯然有一些東西pg_catalog保留了主鍵定義的順序,但這是否意味著兩個定義之間存在任何功能差異?

謝謝

答案1

但是這個定義中的列順序很重要嗎?上述和以下之間是否有任何實際或實際的差異:

中列的順序PRIMARY KEY很重要,因為基礎UNIQUEB 樹索引是按該順序使用屬性建立的,並且會影響索引查找效率。您通常首先需要最具選擇性的屬性。這只會影響效能,不會改變查詢的含義。

沒有語意差異,因為UNIQUE (a, b)意味著UNIQUE (b,a).

相關內容