主键生成的方法
回答
首先建议远离唯一标识符躲避的主键。虽然它有一些有趣的简单方法来生成它的客户端,但它使几乎不可能对主键有任何意义可能是有用的。如果我能够及时回去并且禁止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