我试图找出如果我将主键改为BIGINT(20),表的性能是否会降低.目前,我使用INT(7),大约有300.000 entries already with large IDs (7 or 8 digits)个.
现在我所有的身份证都有7位数,但我的客户想换成8位数.我将来无法轻松地更改软件,所以我考虑现在使用BIGINT(20)以防万一.即使我还不需要使用BIGINT,但使用BIGINT是否会降低性能?
有这方面经验的人对速度和性能有什么建议吗?
我试图找出如果我将主键改为BIGINT(20),表的性能是否会降低.目前,我使用INT(7),大约有300.000 entries already with large IDs (7 or 8 digits)个.
现在我所有的身份证都有7位数,但我的客户想换成8位数.我将来无法轻松地更改软件,所以我考虑现在使用BIGINT(20)以防万一.即使我还不需要使用BIGINT,但使用BIGINT是否会降低性能?
有这方面经验的人对速度和性能有什么建议吗?
回答你的问题:是的,它的性能会降低.显然,类型越大,表越大,查询速度越慢(I/O越多,索引越大,访问时间越长,结果不太可能适合各种缓存,等等).因此,作为一条经验法则:总是使用适合你需要的smallest type个.
也就是说,performance doesn't matter.为什么?因为当你到达一个INT溢出的点时,BIGINT是唯一的解决方案,你必须接受它.此外,在这一点上(考虑到您使用的是自动增量PK,您将超过4billions行),您将有更大的性能问题,与INT相比,BIGINT的开销将是您最不关心的问题.
因此,考虑以下几点: