我是否应该使用整数作为表的主键?
数据库是SQL-CE,有两个主要表,每年约有50000条记录,以及几个较小的表。只有两个连接将不断开放到数据库。但是通过多个TCP套接字连接触发更新,因此许多跨线程访问和使用相同的数据库连接。尽管活动非常低,因此同时更新的可能性相当低,但最多可能会发生几次每天。
可能会使用LINQ2SQL进行数据访问层(DAL)或类型化数据集。
不确定这些信息是否相关,但这就是我为什么在问,因为我不知道 :)
我是否应该使用整数作为表的主键?
数据库是SQL-CE,有两个主要表,每年约有50000条记录,以及几个较小的表。只有两个连接将不断开放到数据库。但是通过多个TCP套接字连接触发更新,因此许多跨线程访问和使用相同的数据库连接。尽管活动非常低,因此同时更新的可能性相当低,但最多可能会发生几次每天。
可能会使用LINQ2SQL进行数据访问层(DAL)或类型化数据集。
不确定这些信息是否相关,但这就是我为什么在问,因为我不知道 :)
你应该使用整数 - 整数更小,意味着占用的内存更少,IO(磁盘和网络)更少,在连接时需要处理的工作也更少。
数据库应该处理并发问题,无论主键类型为何。
GUID
作为主键的优势在于它应该是世界上唯一的,例如将数据从一个数据库移动到另一个数据库。所以您知道行是唯一的。我是否应该使用整数作为我的表的主键?
只要每个整数是唯一的,就可以使用整数作为主键,没有问题。Guids 一开始听起来是一个不错的主意,但实际上它们太大了。大多数情况下,这就像用大锤打死一只苍蝇,Guid的大小使得它比使用整数慢得多。
一定要使用整数,在集群索引(PK)中不要使用GUID,因为这会导致表格不必要地碎片化。