我试图找出如果将主键更改为BIGINT(20)时表的性能是否会下降。目前,我正在使用INT(7),并且已经有大约 300.000个条目具有大ID(7或8位数字) 。我已经搜索了很多东西,但只发现它使用了更多的磁盘空间(这很明显)。
我所有的ID现在都有7位数字,但是我的客户希望更改为8位数字。将来我将无法轻松更改软件,因此我考虑现在使用BIGINT(20)以防万一。即使我不需要使用BIGINT也会降低性能吗?
有经验的人对速度和性能有建议吗?
要回答您的问题:是的,它的性能会降低。显然,类型越大,表越大,查询就越慢(I / O越多,索引越大,访问时间越长,结果适合各种缓存的可能性越小等等)。因此,根据经验:始终使用适合您所需的 最小类型 。
话虽如此, 性能并不重要 。为什么?因为当到达溢出INT的地步时,BIGINT是唯一的解决方案,您将不得不接受它。同样在这一点上(考虑到您正在使用自动增量PK,您将超过40 亿 行),您将遇到更大的性能问题,并且与INT相比,BIGINT的开销将是您所关注的最少。
因此,请考虑以下几点: