大表的最佳主键格式

Car*_*lis 3 c# sql-server asp.net entity-framework sql-server-2008

我正在开发一个具有一些潜在大数据表的asp.net应用程序.我想知道定义主键的最佳方法是什么.我知道之前有人问过,但由于这是针对特定情况的,我认为这个问题是有效的.

我在SQL Server 2008数据库上使用Entity Framework 4.

考虑以下因素,定义主键有哪些可能性:

  1. 很有可能随着时间的推移,记录数将超过32位边界,因此无法实现自动增量整数.
  2. 无法在表中的其他列的组合上定义主键.
  3. 出于数据同步的原因,应用程序生成的id优先于数据库生成的id.此外,在EF中,它意味着额外往返数据库以检索新生成的id.
  4. 对于插入性能,顺序键是更可取的.
  5. 我认为(顺序)guid的空间要求是一个缺点.
  6. 对于字符串id,最好不区分大小写.

到目前为止,我自己想出的是一个自定义算法,它生成一个日期时间部分和一个随机部分,转换为十六进制字符串表示.这让我的字符串略短于guid.我仍然可以将它转换为base64,但这将违反项目nr 6.

谢谢你的建议.

Ed *_*per 12

您可以考虑将密钥存储为BIGINT(8字节整数).

BIGINT与INT完全一样,可以以相同的方式在自动递增标识列中使用.