2017-04-26 26 views
0

由於大型數據集上的大小和性能問題,我讀過UUID通常不推薦作爲主鍵。將UUID用作小型SQL表的主鍵

但是,在頂級組織表中使用它會有害嗎?例如。 組織分支,哪裏只有少數條目?

+0

你的意思是GUID的?總之,沒有。但是,您可能需要在交易表中反映這一點。你也應該在你的數據庫中保持一致。 PK的身份或GUID,不是混合。如果你有一個很好的GUID的理由 - 即記錄必須是普遍唯一的,那麼通過一切手段使用它。但如果你只是這樣做,以避免正確建模你的數據,那麼這是不好的設計實踐。 –

+0

我不同意這個問題的前提。磁盤空間很便宜,作爲主鍵,UUID應該具有良好的索引和性能。 – ceejayoz

+0

@ Nick.McDermaid UUID和GUID是一回事。 https://en.wikipedia.org/wiki/Universally_unique_identifier – ceejayoz

回答

1

我建議您使用serial而不是UUID。爲什麼整數優於UUID?

  • 它們佔用的空間較小。這在基礎表中是一個邊際考慮因素,但對於外鍵來說是一個更大的問題。
  • 整數更容易閱讀和記憶。

在許多數據庫中,表格使用主鍵進行物理排序。在這樣的數據庫中,UUID上的新插入將幾乎總是在「之間」記錄之間,這很昂貴。但是,Postgres不支持聚簇索引,因此底層數據沒有排序。

有不利之處整數:

  • 有一個有限的數量,雖然大整數幾乎解決這個問題。
  • 它們編碼插入順序信息。其實,這可能是積極的或消極的。

除了空間使用情況,我不認爲在靜態表上使用UUID會有很大的傷害。我強烈喜歡整數,只有在整數很難計算的情況下才會使用UUID。

+0

@a_horse_with_no_name。 。 。謝謝。 –

相關問題