簡體   English   中英

SQL:多個 INT 列作為主鍵,還是一個 VARCHAR?

[英]SQL : multiple INT columns as primary key, or a VARCHAR?

如果我有下表,創建主鍵的最佳做法是什么?

這 3 個INT的組合將始終創建一個唯一標識符,即我的主鍵。 我應該將所有三列都分配給主鍵嗎?

col1  |  col2  |  col3
1        50       1540
2        50       1540
1        50       1541
1        51       1540

將單列主鍵創建為CHAR(N)VARCHAR會更聰明,如下所示?

50_1540_1
50_1540_2
50_1541_1
51_1540_1

我正在考慮性能問題,因為該表可能超過 1 億行

哪個更聰明? 對於這種特殊情況,將所有三列分配為主鍵。 以下是三個原因:

  • 為什么要復制列的空間?
  • 您可能希望保留原始列,因為它們 - 大概 - 意味着什么。
  • 外鍵關系需要引用所有三列,如果您有一個新的連接列,則需要連接所有引用表中的值。

也就是說,我不喜歡復合主鍵。 我建議您使用unique約束(或索引)聲明這三個。 然后有一個自動遞增的鍵作為表的主鍵。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM