主鍵生成的方法
回答
首先建議遠離唯一標識符躲避的主鍵。雖然它有一些有趣的簡單方法來生成它的客戶端,但它使幾乎不可能對主鍵有任何意義可能是有用的。如果我能夠及時回去並且禁止99%使用過的地方使用獨特識別標誌,那麼在過去的2年裏這將節省3人以上的dba /開發時間。
這是我推薦的,使用INT IDENTITY作爲主鍵。
create table YourTableName(
pkID int not null identity primary key,
... the rest of the columns declared next.
)
其中pkID是您的主鍵列的名稱。
這應該做你正在尋找。
有趣。你能否延續你的建議,並解釋爲什麼你的經驗與uniqueidentifiers是如此糟糕。爲什麼你不能有任何有用的索引?那是因爲字體大小和索引大小? – huhu78 2012-04-14 21:30:49
在索引中使用uniqueidentifiers,因爲沒有自然的排序順序,所以效率非常低。基於索引的b-tree結構,當使用uniqueidentifiers時,最終會產生極其分散的索引。重建或重組後,它們仍然非常分散。所以你最終會得到一個較慢的索引,由於存在碎片,最終會導致在內存和磁盤上非常龐大。同樣,在插入uniqueidentifier時,您更可能最終在索引上進行頁面拆分,從而減慢插入速度。通常,uniqueidentifiers對於索引是個壞消息。 – 2012-04-14 22:05:26
好點。我會記得的。我認爲妥協可能是將uniqueidentifier作爲主鍵,並構建CLUSTERED索引,包括不唯一但在uniqueidentifier列前排序數據列。然後你在表格/頁面中有「物理」和有用的數據順序。 – huhu78 2012-04-15 11:07:52
AUTO_INCREMENT
在MySQL,IDENTITY
在SQL Server ..
在SQL Server IDENTITY
,如果你需要得到了解你的新ID是什麼,而INSERT
-ing數據,使用INSERT
聲明OUTPUT
條款 - 所以新行的副本放在table-type參數中。
如果由於某些原因在SQL中生成唯一ID不適合您,請在您的應用程序中生成GUID - GUID具有非常高的獨特性(但實際上並不能保證)。 SQL Server具有專用的GUID類型 - 它被稱爲uniqueidentifier
。
- 1. 生成的GUID主鍵EF5
- 2. 什麼是自動生成主鍵的最佳方法?
- 3. JPA複合主鍵生成
- 4. 生成主鍵和確認
- 5. EclipseLink生成重複主鍵
- 6. JPA主鍵自動生成
- 7. 主鍵生成MySQL休眠
- 8. 生成字符串主鍵中的SQLAlchemy
- 9. 生成一個唯一的主鍵
- 10. Datanucleus JDO檢索新生成的主鍵
- 11. 的JdbcTemplate如何自動生成主鍵
- 12. 從外部系統生成的主鍵
- 13. 這些主鍵是如何生成的?
- 14. 生成非主鍵的數字
- 15. 處理非身份主鍵的生成
- 16. 自動生成的字符串主鍵
- 17. 找出自動生成的主鍵
- 18. 春天CrudRepository無法股價生成的ID複合主鍵
- 19. 使用Vici無法檢索自動生成的主鍵Coolstorage
- 20. 無法爲沒有主鍵的模型生成模塊
- 21. MySQL:創建表,主鍵自動生成?
- 22. MySQL Workbench爲主鍵自動生成UUID
- 23. 阻止更新生成主鍵列
- 24. PostgreSQL複製命令生成主鍵ID
- 25. 生成SQL以更新主鍵
- 26. 自動ID生成是在vb.net主鍵
- 27. 實體框架自動生成主鍵
- 28. 生成主鍵還是(id)在jsp中?
- 29. 我想要自動生成主鍵
- 30. MySQL UUID主鍵 - 由PHP或MySQL生成?
對不起,但我不明白'內射'。你什麼意思? – Steve 2012-04-14 10:38:15
「內射函數是一種保持獨特性的函數」# – nothrow 2012-04-14 11:08:57