SQL Server BIGINT 或 DECIMAL(18,0) 主键

2023-11-25

我们有一个 SQL Server 2005 数据库,我们希望提高批量删除/插入/选择的性能,我注意到它使用decimal(18,0)为其主键。我知道这会给我们带来更多的价值bigint但我希望这可能是一个快速的胜利,并且根据我的计算,应该能让我们持续数百万年的增长。

我在.net上看到docs小数占用 16 个字节,而不是长整型所需的 8 个字节,但在 SQL Server 中,它看起来像bigint 占用8个字节但是decimal(18,0)只需要5 bytes- 也看到了select DATALENGTH(max(id)) from table。它是否正确?

还有其他原因吗bigint可能会慢一些或者我应该坚持decimal(18,0)?


您可以使用 bigint 获得此范围:

-2^63 to 2^63-1 

also known as roughly:

-9.2 x 10^18 to 9.2 x 10^18

你可以用decimal(18,0)得到这个范围:

-10^18 to 10^18

十进制:每精度的存储字节数

Precision    Storage Bytes
1-9:         5
10-19:       9
20-28:       13
29-38:       17

整数类型和存储字节

integer type    Storage Bytes
bigint          8
int             4
smallint        2
tinyint         1

Thoughts

您的问题中发布的两个示例实际上产生了几乎相同数量的唯一值。

此外,无论您如何选择,您都不会看到显着的性能变化,但如果您开始在程序员期望整数的地方使用小数,您将看到团队中其他程序员的效率发生变化。这是一个小问题。

为了解决您的特定问题,如果您想要更大的范围,请使用 Decimal(38,0)。这给你:

-10^38 to 10^38

如果您关心速度,请使用软件生命周期内的最低精度。

如果您不是以纳秒为单位测量时间,那么请选择最适合您的程序员的思维方式以及您想要拥有一组很长的数字的愿望的选项。

参考

  • 小数和数字类型
  • 整数类型
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL Server BIGINT 或 DECIMAL(18,0) 主键 的相关文章

随机推荐

  • 如果失败,如何重新发送 GWT RPC 请求(或如何创建持久 RPC 请求)?

    如果失败 HTTP 200 之外的任何响应代码 我需要重试发送 GWT RPC 请求 原因很复杂 我就不多说了 到目前为止 我将所有请求响应放在同一个地方 如下所示 We override the RpcRequestBuilder doS
  • 垂直 RecyclerView 内的水平 RecyclerView 滚动急动

    我使用的布局中使用多个 RecyclerView 水平 作为 RecyclerView 的项目视图 问题是垂直滚动并不像我期望的那么平滑 垂直滚动时有一些抽搐 Parent RecyclerView 如何消除这些垂直滚动抖动 我曾经在Par
  • 为什么修补/保存时日期/时间值解释不正确?

    我尝试保存 cakephp 3 表单中的数据 所有数据都保存得很好 但日期时间却没有 我有 2 个日期时间字段 这些字段由 jquery ui 小部件填充 问题似乎发生在打包实体时 intervention this gt Interven
  • AngularJS $http.get 带有解析

    我正在了解 AngularJS 但我遇到了一个有趣的问题 我正在了解routeProvider 我想我可以编写我的应用程序 就像您搜索表名称一样 它会更改路线 因此您也可以在url之后编写表 来自 app js 的详细信息 app conf
  • 在角度 2/4 中更改属性时创建过渡

    每当我更改属性的值时 我想创建一个过渡效果 我尝试执行以下操作 Component selector image holder template div class carousel image img src span text span
  • 使用 tastypie 资源将查询集转换为 json

    我有一个模型的美味馅饼资源 我还有一个视图 其中包含一个查询集 需要序列化并发送给客户端 我正在寻找一种方法让 tastypie 资源处理查询集的序列化和脱水 我发现我可以将单个对象传递给 Resource build bundle sel
  • 如何在 JavaScript 中获取两个数组之间的差异?

    JavaScript 有没有办法返回两个数组之间的差异 例如 var a1 a b var a2 a b c d need c d Array prototype includes ES2016 ES7 在这里派上用场 路口 let int
  • 使用 Javascript 更改标签的类型

    假设我想改变一切 img 标签到页面上的标签 javascript 可以用于此目的吗 有什么方法可以更改实际的标签类型 或者我必须先删除 img 然后创建 如果是这样 我如何确保新标签与旧标签具有相同的容器等 执行此类替换的最直接且浏览器友
  • SQL数据库中的搜索列忽略特殊字符

    有谁知道是否可以对 SQL Server 数据库中的列进行 LIKE 搜索 但让它忽略列中的任何特殊字符 因此 例如 如果我有一个名为 歌曲 的列 并且它们包含以下内容 黑或白 直到布鲁克林才睡觉 船歌 爸爸不传教 如果用户搜索 no sl
  • Mongoose toObject: { 虚拟: true }

    我正在尝试学习 MongoDB Node 我注意到在模式中我经常看到这样的东西 toObject virtuals true toJSON virtuals true 这两行是什么意思 这不是 MongoDB 而是特定于 mongoose
  • 如何向MySQL中插入自增列(字段)数据?

    我创建了一个带有主键并启用的表AUTO INCREMENT CREATE TABLE IF NOT EXISTS test authors hostcheck id INT PRIMARY KEY AUTO INCREMENT instan
  • Firefox 中缓慢滚动和平滑滚动的 Javascript 解决方法

    我是一名网络应用程序开发人员 在这个应用程序中 有一个特定的场景 其中有多个position fixed元素 canvas和一个overflow scroll元素 在这种情况下 当启用平滑滚动时 Firefox 上的滚动速度非常慢 从用户的
  • 我可以使用 Newtonsoft.Json 进行严格的反序列化吗?

    我正在使用 Newtonsoft Json 来序列化 反序列化对象 据我所知 如果类没有无参数构造函数 反序列化就不会成功 例子 public class Dog public string Name public Dog string n
  • 如何重新配置​​ eclipse 以使用 64 位 JVM

    我在我认为的所有 64 位运行时环境上使用 eclipse 当前设置Java gt 安装的JRE和执行环境都指向jdk1 6 0 30 这是JDK的64位版本 但是 eclipse 仍然认为它正在运行 32 位版本 因为当我运行时 Syst
  • Solr 中的表达式排序

    在 SQL 中 您可以通过如下表达式进行排序 SELECT FROM a ORDER BY CASE WHEN a Category 20 THEN 1 ELSE 0 DESC 因此类别 20 的记录位于顶部 这在 Solr 中可能吗 So
  • 字符串大写 - 更好的方法

    哪种资本化方法更好 mine char charArray string toCharArray charArray 0 Character toUpperCase charArray 0 return new String charArr
  • 按字母顺序排列 Unicode 中的阿拉伯语和日语文本?

    有谁有 Unicode 中的按字母顺序排列阿拉伯语和日语文本的代码吗 如果代码是用 ruby 写的那就太好了 Unicode 代码点不是按字母顺序列出的 例如 Z Unicode 排序算法它们也是特定于语言的排序 法语顺序与德语或捷克语顺序
  • 在第三方服务器上验证 Android 的 authToken

    我正在编写一个 Android 应用程序 它使用 AccountManager 来获取令牌 我可以通过 Android 应用程序与 Google Picasa 进行交互 它工作得很好 我想要实现的目标如下 将一些文本 authToken 发
  • Javascript 检测系统的音量(声音)和插入的音频插孔

    HTML5 具有板载音量检测功能
  • SQL Server BIGINT 或 DECIMAL(18,0) 主键

    我们有一个 SQL Server 2005 数据库 我们希望提高批量删除 插入 选择的性能 我注意到它使用decimal 18 0 为其主键 我知道这会给我们带来更多的价值bigint但我希望这可能是一个快速的胜利 并且根据我的计算 应该能