主键生成的方法
回答
首先建议远离唯一标识符躲避的主键。虽然它有一些有趣的简单方法来生成它的客户端,但它使几乎不可能对主键有任何意义可能是有用的。如果我能够及时回去并且禁止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. 什么是自动生成主键的最佳方法?
- 2. JPA主键自动生成
- 3. 生成主键和确认
- 4. Datanucleus JDO检索新生成的主键
- 5. 这些主键是如何生成的?
- 6. 处理非身份主键的生成
- 7. 从外部系统生成的主键
- 8. 无法为没有主键的模型生成模块
- 9. 春天CrudRepository无法股价生成的ID复合主键
- 10. 自动ID生成是在vb.net主键
- 11. MySQL自定义主键生成器
- 12. MySQL UUID主键 - 由PHP或MySQL生成?
- 13. 如何使用SSIS生成主键?
- 14. hibernate批注如何生成主键?
- 15. 生成主键还是(id)在jsp中?
- 16. MySQL Workbench为主键自动生成UUID
- 17. 访问PHP方法生成的方法
- 18. 使用主键生成唯一ID的关键字
- 19. Spring Roo,Hibernate为主键列生成不必要的外键
- 20. 泊松随机数生成的主要方法
- 21. 生成不正确方法的SpecFlow步骤生成方案
- 22. 什么是从文本生成关键字的简单方法?
- 23. 生成的关键
- 24. 代码生成:将主键/外键添加到实体框架
- 25. 如何在apache中生成主键(自动生成的序列)cassandra
- 26. 方便的方法来生成日期
- 27. 地牢生成方法
- 28. 动态生成方法
- 29. cdi生成方法忽略
- 30. 密钥生成方法?
对不起,但我不明白'内射'。你什么意思? – Steve 2012-04-14 10:38:15
“内射函数是一种保持独特性的函数”# – nothrow 2012-04-14 11:08:57