sql – numeric(38,0)作为主键列;好,坏,谁在乎?

前端之家收集整理的这篇文章主要介绍了sql – numeric(38,0)作为主键列;好,坏,谁在乎?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我目前的项目中,我遇到了我们的主DB脚本.仔细看看它,我注意到我们所有的原始主键都有一个数字类型(38,0)
我们目前正在运行sql Server 2005作为我们的主数据库平台.

对于一个上下文,我们支持Oracle和sql Server作为我们的后端.在Oracle中,我们的主键具有数字类型(38,0).

有没有人知道这样的实施可能的副作用和性能影响?我一直主张和实现int或bigint作为主键,并且希望知道数字(38,0)是一个更好的选择.

解决方法

那么你正在花更多的数据来存储你永远无法达到的数字.

bigint在8字节高达9,223,372,036,854,775,807

int 4字节高达2,147,483,647

一个NUMERIC(38,0)将要执行,如果我正在做数学的话,17个字节.

不是很大的区别,但是:较小的数据类型=内存中的更多行(或相同行数的页面较少)=执行查找(索引或数据页寻找)的磁盘I / O较少.复制,日志页面等都是一样的

对于sql Server:INT是一个IEEE标准,因此cpu比较容易,所以通过使用INT与NUMERIC(这是一个压缩的十进制格式),您可以稍微提高性能. (请注意,在Oracle中,如果当前版本与我长大的旧版本相匹配,则所有数据类型都将打包,因此INT内部与NUMERIC(x,0)几乎相同,因此没有性能差异.

所以,在宏伟的计划中 – 如果你有大量的磁盘,RAM和备用的I / O,你可以使用任何你想要的数据类型.如果你想获得更多的表现,请稍微保守一点.

否则在这一点上,我会离开它.没有必要改变事情.

猜你在找的MsSQL相关文章