Sql-Server
使用時間戳作為主鍵是個好主意 - mysql/mariadb?
我們剛才爭論說在 microsoft 的 sqlserver 中儲存時間戳確實保證了唯一性,但我對 mysql/mariadb 有點懷疑,因為我們在插入 mysql/mariadb 數據庫時使用並行執行。
那麼,使用時間戳作為主鍵是個好主意嗎 - mysql/mariadb?
PS:總是有一個PK和狀態,但如果我們使用時間戳作為where子句來獲取要歸檔/刪除的實際剩餘記錄(這樣它在查詢記錄時很有效),那麼它很重要。所以它的獨特性很重要
IMO 這很糟糕,原因有幾個。首先,盲目地為每個關係分配生成的 pk 是不好的做法。至少嘗試確定每個關係中有哪些候選鍵。在某些情況下,替代 pk 可能是最明智的選擇,但在所有可能的情況下絕對不是這樣。候選鍵的良好屬性是:
- 獨特
- 不可約
- 不復雜
- 穩定的
- 熟悉的
通常這些標準之間存在衝突,您必須為另一個而犧牲一個。
其次,如果最好的選擇是代理標識符,我會說時間戳是一個糟糕的選擇。特別是在(MySQL)5.6.4 之前的 MySQL/MariaDB 中,解析度為秒。在這些 DBMS 中使用時間戳作為 pk 意味著您不能插入超過一行/秒(只要時間戳應該反映插入時間)。