加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 06:24:41 所属栏目:MsSql教程 来源:网络整理
导读:在我目前的项目中,我遇到了我们的主DB脚本.仔细看看它,我注意到我们所有的原始主键都有一个数字类型(38,0) 我们目前正在运行SQL Server 2005作为我们的主数据库平台. 对于一个上下文,我们支持Oracle和SQL Server作为我们的后端.在Oracle中,我们的主键具有数字
在我目前的项目中,我遇到了我们的主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,你可以使用任何你想要的数据类型.如果你想获得更多的表现,请稍微保守一点.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读