Sql-Server

使用時間戳作為主鍵是個好主意 - mysql/mariadb?

  • June 4, 2018

我們剛才爭論說在 microsoft 的 sqlserver 中儲存時間戳確實保證了唯一性,但我對 mysql/mariadb 有點懷疑,因為我們在插入 mysql/mariadb 數據庫時使用並行執行。

那麼,使用時間戳作為主鍵是個好主意嗎 - mysql/mariadb?

PS:總是有一個PK和狀態,但如果我們使用時間戳作為where子句來獲取要歸檔/刪除的實際剩餘記錄(這樣它在查詢記錄時很有效),那麼它很重要。所以它的獨特性很重要

IMO 這很糟糕,原因有幾個。首先,盲目地為每個關係分配生成的 pk 是不好的做法。至少嘗試確定每個關係中有哪些候選鍵。在某些情況下,替代 pk 可能是最明智的選擇,但在所有可能的情況下絕對不是這樣。候選鍵的良好屬性是:

  • 獨特
  • 不可約
  • 不復雜
  • 穩定的
  • 熟悉的

通常這些標準之間存在衝突,您必須為另一個而犧牲一個。

其次,如果最好的選擇是代理標識符,我會說時間戳是一個糟糕的選擇。特別是在(MySQL)5.6.4 之前的 MySQL/MariaDB 中,解析度為秒。在這些 DBMS 中使用時間戳作為 pk 意味著您不能插入超過一行/秒(只要時間戳應該反映插入時間)。

引用自:https://dba.stackexchange.com/questions/168356