当前位置: 首页 > 面试题库 >

SQL Server Int或BigInt数据库表ID

穆才良
2023-03-14
问题内容

我正在编写一个新程序,它将需要一个数据库(SQL Server
2008)。我现在为该系统运行的所有内容都是64位的,这使我想到了这个问题。对于各种表中的所有Id列,我应该将它们全部设置为INT还是BIGINT?我怀疑该系统是否会超过INT范围,但是我认为某些较大的财务表中可能会出现这种情况。似乎INT是标准的…


问题答案:

好的,让我们快速回顾一下数学:

  • INT是32位的,基本上为您提供40亿个值-如果仅计算大于零的值,则仍为20亿个值。你有这么多员工吗?顾客?产品有存货吗?在您公司生命周期内的订单?真的吗?

  • BIGINT远远超出了这一范围。您真的需要吗? 真的 吗?? 如果您是天文学家,或者是粒子物理学的-也许。普通业务用户?我对此表示强烈怀疑

假设您有一个表-
假设有-1000万行(贵公司的订单)。假设您有一个Orders表,并且其他5个表引用了您作为BIGINT生成的OrderID,并在Orders表中的5个非聚集索引中使用了-
我认为不要过度,对吧?

1000万行,由5个表加上5个非聚集索引组成,这是1亿个实例,其中每个实例使用8个字节而不是4个字节-4亿个字节= 400
MB。完全浪费…您将需要更多的数据和索引页,您的SQL Server将不得不从磁盘读取更多的页面并缓存更多的页面....这对您的性能没有好处-简单明了。

加上:大多数程序员不会考虑的问题:是的,磁盘空间非常便宜。但这浪费的空间在SQL Server RAM内存和数据库缓存中也很重要-而且这个空间并不便宜!

因此,要写一篇很长的文章,请使用最适合您需求的最小类型的INT;如果您要处理10-20个不同的值,请使用TINYINT。如果您需要订单表,我相信INT应该足够
丰富-BIGINT 只是浪费空间。

另外:如果您的表中的任何一个确实要达到2或40亿行,如果确实需要,您仍然有足够的时间将表升级到BIGINT ID。



 类似资料:
  • 我正在写一个不和谐机器人和抽搐机器人。我目前正在编写一个函数,将用户的Twitch和Discord ID保存在数据库中。 这是我现在的功能: 我使用的是每个用户唯一的。我有控制台记录的,它是我正确的不和谐ID。但一旦放入数据库,数字就会发生变化。 我的不一致ID是522855210926735422 但数据库中显示的数字是522855210926735400 (22偏离正确值) 我使用bigint

  • MySQL、Oracle、PostgreSQL、SQL Server、MariaDB、MongoDB 在“数据库”选项卡中,你可以设置连接到服务器时导航窗格显示哪些数据库。这设置不是强制的。若要设置自定义数据库设置,请勾选“使用自定义数据库列表”。然后,从“数据库”列勾选要显示的数据库。如果你想连接时 Navicat 自动打开数据库,勾选“自动打开”框。 添加一个隐藏的数据库到列表 点击“添加数据

  • MySQL、Oracle、PostgreSQL、SQL Server、MariaDB、MongoDB 在“数据库”选项卡中,你可以设置连接到服务器时导航窗格显示哪些数据库。这设置不是强制的。若要设置自定义数据库设置,请勾选“使用自定义数据库列表”。然后,从“数据库”列勾选要显示的数据库。如果你想连接时 Navicat 自动打开数据库,勾选“自动打开”框。 添加一个隐藏的数据库到列表 点击“添加数据

  • 问题内容: 我有一个关于数据库体系结构的问题。 我们正在建立一个CMS。许多字段将具有预填充的选择。例如,客户的信用状态可以为“良好”,“不良”,“未知”或“存款”。该项目的规格是这些预先填充的选择是动态的,管理员可以通过后端添加新值。所以我需要将这些值存储在数据库中。 我正在努力在两种方法之间做出决定 1)为每种清单都有一张桌子。示例将是诸如list_CrediStatus,list_Branc

  • 创建表 查看表结构 查看表详细结构 修改表名 修改字段的数据类型 修改字段名 增加字段 删除字段 删除关联表 (1)删除表的外键约束 (2)删除没有被关联的普通表 (3)删除被其他表关联的父表 创建表: CREATE TABLE 表名 (属性名 数据类型 [完整性约束条件], 属性名 数据类型 [完整性约束条件], 属性名 数据类型 [完整性约束条件]) “完整性约束条件”是指指定某些字段的某些特

  • 介绍 传统关系型数据库(MySQL)的模型,日常增删改查完全够用,支持复合主键、联合主键。 模型定义 喜闻乐见的对命名空间、类名无要求,只要按照规定写注解即可! @Entity 注解为定义实体类 @Table 注解为定义数据表 @Column 注解为定义字段 @DDL 定义表结构的 SQL 语句 建议使用模型生成工具:https://doc.imiphp.com/dev/generate/mode