bre*_*dog 10 sql database sql-server database-design primary-key
我有什么理由不使用Integer作为我的表的主键吗?
数据库是SQL-CE,每年大约50,000个条目的两个主表,以及一些次要表.只有两个连接将一直存在于数据库中.但是更新将通过多个TCP套接字连接触发,因此将有许多交叉线程访问并使用相同的数据库连接.虽然活动非常低,但是同样的更新是不太可能的,但可能每天最多可能发生几次.
可能会将LINQ2SQL用于DAL或类型化数据集.
不确定这些信息是否相关,但这就是我要问的原因,因为我不知道:)
Ode*_*ded 10
您应该使用一个整数 - 它更小,意味着更少的内存,更少的IO(磁盘和网络),更少的连接工作.
无论PK的类型如何,数据库都应该处理并发问题.
使用GUIDprimkey 的优点是它在世界上应该是唯一的,例如是否将数据从一个数据库移动到另一个数据库.所以你知道这行是独一无二的.
但是如果我们谈论的是一个小型数据库,那么我更喜欢整数.
编辑:
如果你使用SQL Server 2005 ++,你也可以使用NEWSEQUENTIALID(),这会根据上面的行生成一个GUID.允许newid()的索引问题不再存在.
我有什么理由不使用Integer作为我的表的主键吗?
不,只要每一个都是唯一的,整数就可以了.Guids起初听起来不错,但实际上它们太大了.大多数时候,它使用大锤杀死苍蝇,而Guid的大小比使用整数慢得多.
在这种情况下,我认为没有理由不使用自动增量整数.如果你到达一个整数无法处理数据量的点,那么你所说的是一个应用程序,它扩展到了无论如何还要涉及更多工作的程度.
请记住以下几点: