c# - Identity Column 的 Int32 限制

标签 c# .net sql-server identity-column type-conversion

这只是对正在创建的网站和其他大型网站的考虑。

我正在使用标识列来存储我的一些表的 ID,并且我有一些类,其 Id 用 Int32 装饰以保存从数据库中检索到的 ID 的值。

我担心的是,随着网站越来越大,一些呈指数增长的表格(例如 QuestionComments)将来可能会超过 Int32 限制。所以我更改了我的类以使用 long

public class Question
{
   public long QuestionID { get; set; }
   ...
}

//将数据库值转换为.Net类型

 Question q = new Question();
 q.QuestionID = Convert.ToInt32(myDataRow["QuestionID"]);

我的假设有多真实?使用 UniqueIdentifier 会更好吗?还有其他方法可以解决这个问题吗?

最佳答案

您能想象为任何一个实体存储数十亿条记录吗?如果是这样,您可以切换到 BigInt,也称为 Int64。当然,一旦您开始看到数百万条记录,您就需要开始考虑数据分区和归档以避免严重的性能问题。如果您有一个基础架构团队,您可能想让他们知道您预计会大量使用并且需要认真的维护计划。如果您是基础架构团队,那么您最好按部就类!

关于c# - Identity Column 的 Int32 限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12082841/

相关文章:

c# - 使用 IValueProvider.GetValue 匹配多个对象

.net - WPF 中的应用程序级快捷键

c# SQL Compact 监控 FileSystemWatcher 或 SqlDependency

c# - 简单的建议在哪里保存设置

c# - 如何以编程方式训练我的 Google Cloud AutoML 自定义模型?

c# - 从字符串转换为 char* 仅复制第一个字符

c# - ASP 必填字段验证器显示星号而不是错误消息

c# - 如何使用 linq 从表中搜索任何属性?

.net - 未在使用Microsoft Fakes的C#测试项目中的/reference选项“/引用选项”中指定错误 "The extern alias ' snh'

sql - 重构使用 row_number() 返回具有唯一列值的行的 tsql View