2012-10-24 91 views
1

我想創建一個包含「電子郵件地址」和/或「用戶名」字段的「用戶」表,我是否還應該將「id」int usigned auto_increment添加爲primary key選擇PRIMARY KEY

我在問,因爲我已經看到一些教科書示例在這樣的表中使用「id」字段與另一個unique字段。

+0

你不需要,但我總是這樣做。 – DickieBoy

+0

根據您的應用程序,您可能不希望對電子郵件進行唯一限制。 – Kermit

回答

4

是的,這是最佳做法。

  1. 您將在其他表中使用它作爲外鍵。
  2. 您希望密鑰保持唯一(您可能想要更改用戶名)
  3. 您希望密鑰被索引,對於數字類型,索引將小於varchar。
+0

爲什麼我不能在其他表中使用「userName」字段作爲外鍵? – MTVS

+0

@csstd字符串搜索和整數索引較慢。 – Kermit

1

您應該使用userId列,因爲使用VARCHAR索引表的列數據類型的性能會較差。使用INT更好的性能。他們佔用更少的空間,更重要的是他們比較快。可以在一個CPU指令中執行INT比較。對於VARCHAR s或CHAR s,必須依次比較每個字符。這使得每個PK查找更快。如果你有連接表,每個連接選擇都會查找PK。