首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在MS SQL中,作为主键的INT和NUMERIC之间是否存在性能差异?

在MS SQL中,作为主键的INT和NUMERIC之间存在性能差异。

INT是整数类型,占用4字节存储空间,表示范围为-2,147,483,648到2,147,483,647。NUMERIC是精确数值类型,占用可变长度存储空间,可以存储用户指定的精度和小数位数。

由于INT类型占用固定长度存储空间,其查询、索引和排序等操作速度较快。在表设计中,如果主键字段的取值范围不需要涵盖非常大的数值,且不需要精确数值计算,使用INT作为主键类型可以获得更好的性能。

而NUMERIC类型则需要更多的存储空间,并且在计算和比较时会消耗更多的计算资源。NUMERIC主键的优势在于可以精确表示浮点数或者需要较高精度计算的场景。

因此,根据具体需求,选择适当的主键类型可以提升数据库的性能。对于主键字段的取值范围较小且不需要精确计算的场景,推荐使用INT作为主键类型。

对于腾讯云相关产品,TencentDB for SQL Server是腾讯云提供的云数据库服务,支持SQL Server数据库,具有高可用性、弹性扩展、备份恢复等特性。您可以访问以下链接了解更多信息:

请注意,本回答仅针对MS SQL中INT和NUMERIC主键类型的性能差异,不涉及其他云计算品牌商。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

去 BAT 面试,总结了这 50 道 MySQL 面试题!

Latin字符这两个数据是相同,但是对于Unicode其他编码,它们是不同。 6、请简洁描述MysqlInnoDB支持四种事务隔离级别名称,以及逐级之间区别?...DATEDIFF(A,B) - 确定两个日期之间差异,通常用于计算年龄 SUBTIMES(A,B) - 确定两次之间差异。 FROMDAYS(INT) - 将整数天数转换为日期值。...因此,在这种情况下,能被存储salary列范围是从-9999999.99到9999999.99。ANSI/ISO SQL92,句法DECIMAL(p)等价于DECIMAL(p,0)。...DECIMALNUMERIC作为字符串存储,而不是作为二进制浮点数,以便保存那些值小数精度。 一个字符用于值每一位、小数点(如果scale>0)“-”符号(对于负值)。...锁力度小,发生锁冲突概率小,并发度最高 50、Heap表是什么? HEAP表存在于内存,用于临时高速存储。

3.2K20

去 BAT 面试,总结了这 55 道 MySQL 面试题!

HEAP表存在于内存,用于临时高速存储。...只要表其他字段发生更改,UPDATE CURRENT_TIMESTAMP修饰符就将时间戳字段更新为当前时间。 17、主键候选键有什么区别? 表格每一行都由主键唯一标识,一个表只有一个主键。...DATEDIFF(A,B) - 确定两个日期之间差异,通常用于计算年龄 SUBTIMES(A,B) - 确定两次之间差异。 FROMDAYS(INT) - 将整数天数转换为日期值。...因此,在这种情况下,能被存储salary列范围是从-9999999.99到9999999.99。ANSI/ISO SQL92,句法DECIMAL(p)等价于DECIMAL(p,0)。...DECIMALNUMERIC作为字符串存储,而不是作为二进制浮点数,以便保存那些值小数精度。 一个字符用于值每一位、小数点(如果scale>0)“-”符号(对于负值)。

17.8K20
  • Mysql常见知识点【新】

    ·HEAP表存在于内存,用于临时高速存储。...·DATEDIFF(A,B) - 确定两个日期之间差异,通常用于计算年龄 ·SUBTIMES(A,B) - 确定两次之间差异。 ·FROMDAYS(INT) - 将整数天数转换为日期值。...MySQL将ACL(也称为授权表)缓存在内存。当用户尝试认证或运行命令时,MySQL会按照预定顺序检查ACL认证信息权限。 51、MYSQL支持事务吗?...因此,在这种情况下,能被存储salary列范围是从-9999999.99到9999999.99。ANSI/ISO SQL92,句法DECIMAL(p)等价于DECIMAL(p,0)。...DECIMALNUMERIC作为字符串存储,而不是作为二进制浮点数,以便保存那些值小数精度。 一个字符用于值每一位、小数点(如果scale>0)“-”符号(对于负值)。

    2.3K30

    大表分页查询非常慢,怎么办?

    一、问题复现 实际软件系统开发过程,随着使用用户群体越来越多,表数据也会随着时间推移,单表数据量会越来越大。...下面我们一起来测试一下,每次查询客户表时最多返回 100 条数据,不同起始下,数据库查询性能差异。...:18 ms 可以很清晰看到,带上主键 ID 作为过滤条件,查询性能非常稳定,基本上20 ms内可以返回。...elasticSearch ,通过 elasticSearch 实现快速分页搜索,效果提升也是非常明显。...但如果当前表主键 ID 是字符串类型,比如 uuid 这种,就没办法实现这种排序特性,而且搜索性能也非常差,因此不建议大家采用 uuid 作为主键ID,具体数值类型主键 ID 生成方案有很多种,比如自增

    1.5K20

    千万级别的表分页查询非常慢,怎么办?

    下面我们一起来测试一下,每次查询客户表时最多返回 100 条数据,不同起始下,数据库查询性能差异。...当起点位置 0 时候,仅耗时:18 ms当起点位置 1000 时候,仅耗时:23 ms当起点位置 10000 时候,仅耗时:54 ms当起点位置 100000 时候,仅耗时:268 ms...ms可以很清晰看到,带上主键 ID 作为过滤条件,查询性能非常稳定,基本上20 ms内可以返回。...elasticSearch ,通过 elasticSearch 实现快速分页搜索,效果提升也是非常明显。...但如果当前表主键 ID 是字符串类型,比如 uuid 这种,就没办法实现这种排序特性,而且搜索性能也非常差,因此不建议大家采用 uuid 作为主键ID,具体数值类型主键 ID 生成方案有很多种,比如自增

    5.6K30

    MySQL基础SQL编程学习2

    ) : NOT NULL UNIQUE 结合; 约束唯一标识数据库表每条记录确保某列(或两个列多个列结合)有唯一标识主键(键、值)且主键列不能包含 NULL 值,有助于更容易更快速地找到表一个特定记录...(即外键表约束主键表) SET NULL:则当在主键删除对应记录时,首先检查该记录是否有对应外键,如果有则设置子表该外键值为null(一样是外键表约束主键表,不过这就要求该外键允许取null) 5...代码,使用常量 True False (等价于 1 0)。...| | DECIMAL(size,d) | 作为字符串存储 DOUBLE 类型,允许固定小数点。 size 参数规定显示最大位数。 d 参数规定小数点右侧最大位数。...5-17 字节 numeric(p,s) 固定精度比例数字。允许从 -10^38 +1 到 10^38 -1 之间数字。 p 参数指示可以存储最大位数(小数点左侧右侧)。

    7.3K30

    Transact-SQL基础

    bigint 介于 smallmoney int 之间。...精度存储字节数1 - 9510-19920-281329-3817 SQL Server numeric decimal 数据类型默认最大精度为 38。... SQL Server 早期版本,默认最大精度为 28。numeric 功能等同于 decimal 数据类型。 float real 数据类型被称为近似数据类型。...很多应用程序,指定值与存储近似值之间微小差异并不明显。但有时这些差异也较明显。 WHERE 子句搜索条件(特别是 = 运算符),应避免使用 float 列或 real 列。...每次修改或插入包含 rowversion 列行时,就会在 rowversion 列插入经过增量数据库行版本值。这一属性使 rowversion 列不适合作为键使用,尤其是不能作为主键使用。

    3.4K20

    SQL面试 100 问

    = 或者 )这些比较运算符作为过滤条件。 7. 如何查看月薪范围位于 8000 到 12000 之间员工?...举例来说,如果将学生信息选 课信息放在一起,学号课程编号可以作为复合主键;但此时学生其他信息依赖于学号,即主键一部分。...概念 ERD 描述系统存在业务对象以及它们之间关系。逻辑 ERD,即逻辑数据模型。逻辑 ERD 是对概念数据模型进一步分解细化,明确定义每个实体属性并描述操作和事 务。...主流数据库都支持这些常见数据类型,但是类型名称细节上存在一些差异。另外,SQL 还提供其他数据类型,例 如 XML、JSON 以及自定义数据类型。 72....,如果在目标表存在满足条件记录,执行 UPDATE 操作更新目标表对应记录;如果不 存在匹配记录,执行 INSERT 目标表插入一条新记录。

    2.5K22

    C语言: 定义一个函数int isprime(int n),用来判别一个正整数n是否为素数。主函数输入两个正整数mn(m>=1,n>m),统计并输出mn之间素数个数以及这些素数

    我是川川,有问题留言or加我扣扣私聊:2835809579 原题: 定义一个函数int isprime(int n),用来判别一个正整数n是否为素数。...主函数输入两个正整数mn(m>=1,n>m),统计并输出mn之间素数个数以及这些素数。...输入输出示例 输入:2 10 输出:count = 4 ,sum = 17 代码: 在这里插入代码片 ```c #include int isprime(int n) { int i=2;...if(n%i==0) break; } if(i==n) return 1; else return 0; } int...main() { int m,n,count=0; int sum=0; scanf("%d %d",&m,&n); for(int i=m ;i<=n;i++)

    2.6K20

    SqlAlchemy 2.0 中文文档(五十二)

    使用上述模式时,从行插入返回主键标识符(也是将分配给诸如上面的TestTable之类 ORM 对象值)使用 SQL Server 时将是Decimal()实例,而不是int。...MS-SQL 不允许具有触发器表上使用 OUTPUT INSERTED。...然而,这种情况性能不高,不应该依赖于常规使用。如果表实际上不需要 IDENTITY 行为在其整数主键,创建表时应禁用该关键字,方法是确保autoincrement=False被设置。...MS-SQL 不允许具有触发器表上使用 OUTPUT INSERTED。...try_cast() 返回 TryCast 实例,并且通常表现得与 Cast 构造类似; SQL 层面,CAST TRY_CAST 之间区别在于 TRY_CAST 对于不可转换表达式(例如,

    50610

    哪些因素会导致 MySQL 慢查询

    我们知道每个节点之间数据传输是需要时间,比如同城跨机房(15KM)之间访问一般网络耗时1.5ms左右。...链路1 app1--调用--app2---proxy---db 相比 链路2app1 -- proxy --db 执行一条sql请求会增加 app1--app2之间网络传输耗时大约3ms。...,并且需要要进行判断会不会由于自己加入导致死锁,这个时间复杂度O(n),如果有1000个请求,每个线程都要检测自己其他999个线程是否死锁。...推荐阅读《性能优化之分页查询》 4.9 表结构设计 表结构设计是否合理也是影响sql性能重要因素之一。以下表格展示了字段类型不同带来rt性能差异。...其中字段c1 为int类型字段,字段c2则是表名对应字符串长度类型varchar(200)到varchar(5000) ,还有text字段。 对于读请求,单独查询c1 int类型性能并无差异

    77820

    探究导致 MySQL 慢查询因素:从硬件、网络到数据库深度剖析

    我们知道每个节点之间数据传输是需要时间,比如同城跨机房(15KM)之间访问一般网络耗时1.5ms左右。...,这个时间复杂度O(n),如果有1000个请求,每个线程都要检测自己其他999个线程是否死锁。...对于此类操作,取前面少数几行数据会很快,但是扫描记录数越多,SQL性能就会越差,因为N越大,MySQL需要扫描越多数据来定位到具体N行,这样耗费大量IO 成本时间成本。...推荐阅读 性能优化之分页查询 4.9 表结构设计 表结构设计是否合理也是影响sql性能重要因素之一。以下表格展示了字段类型不同带来rt性能差异。...对于读请求,单独查询c1 int类型性能并无差异。查询字段c2时,随着字段占用实际字节大小增大,耗费时间增加,也即rt增大。带宽逐步增大,text带宽147MB 对于千兆网卡已经满了。 ?

    3K60

    day29_Hibernate学习笔记_01

    绑定到本地线程,底层使用ThreadLocal,程序之间共享Session。...6.3、区分自然主键代理主键 主键需要具备: 不为空/不能重复/不能改变 自然主键:在业务,某个属性符合主键三个要求,那么该属性可以作为主键列。...代理主键:在业务,不存符合以上3个条件属性,那么就增加一个没有意义列,作为主键。 6.4、基本数据与包装类型 基本数据类型包装类型对应hibernate映射类型相同。...-- 配置 PO类  表 之间对应关系 -->     <!...                1.increment 数据库自己生成主键,先从数据库查询最大ID值,将ID值加1作为主键,不建议使用,存在线程并发问题                 2.identity

    1.1K20

    学习gorm系列八:探秘gorm.Save函数

    大纲如下: 概述 跟gorm.Create函数行为不同,gorm.Save函数大体上有两个行为: 待更新数据不存在情况下做插入操作 待更新数据存在情况下做更新操作 数据是否存在一个重要依据就是待更新记录里是否存在主键字段...1.4 指定where条件 Save函数,Where条件模型主键若同时存在,则sql语句where条件会转换成指定where条件以及主键。...函数就需要指定具体Where条件才能进行更新;当表主键字段名非id时,则需要使用gorm:"primary_key"标签来将model字段非id字段主键进行关联。...但gorm依然默认将id字段作为主键进行更新。 四、总结 Save函数会优先做更新操作。更新不成功时,再做插入操作。更新操作时,优先使用字段名为"id"字段作为主键来进行更新。...若表没有id字段,但存在其他主键字段,则需要在model通过标签gorm:primary将gorm主键字段关联起来。

    1.8K10

    哪些因素会导致慢查询?

    我们知道每个节点之间数据传输是需要时间,比如同城跨机房(15KM)之间访问一般网络耗时1.5ms左右。...,这个时间复杂度O(n),如果有1000个请求,每个线程都要检测自己其他999个线程是否死锁。...对于此类操作,取前面少数几行数据会很快,但是扫描记录数越多,SQL性能就会越差,因为N越大,MySQL需要扫描越多数据来定位到具体N行,这样耗费大量IO 成本时间成本。...推荐阅读 性能优化之分页查询 4.9 表结构设计 表结构设计是否合理也是影响sql性能重要因素之一。以下表格展示了字段类型不同带来rt性能差异。...对于读请求,单独查询c1 int类型性能并无差异。查询字段c2时,随着字段占用实际字节大小增大,耗费时间增加,也即rt增大。带宽逐步增大,text带宽147MB 对于千兆网卡已经满了。 ?

    1.3K40

    什么是数据库索引?

    Execution Time: 19.048 ms (5 rows) 此时如果直接使用c1字段作为查询条件是无法走索引,同理如果创建是普通索引,查询时对字段加上了函数或者表达式,都不会走索引...索引非银弹 索引需要占用额外物理空间,如果表数据变化,也需要同步维护索引数据,对数据库性能会有一定影响。考虑到索引维护代价、空间占用查询时回表代价,不能认为索引越多越好。...满足能走索引条件下,最终是否走索引由计划器生成执行计划决定,PostgreSQL/MySQL执行计划是完全基于代价估计,如果估算代价为全表扫描最优,则不会使用索引扫描 这里代价,包括IO成本...,且关联时结果集较大,所以性能会差一些,执行计划器会对子查询进行逻辑优化,将子查询上提到父查询,与父查询合并,过滤出较小结果集再进行关联 子查询类型是否支持优化 any,some,exists,not...如果一定需要,应该避免使用分布较高作为查询条件。分布不均匀指不同列值占总体比例差异很大(通常超过50%),即某一个列值或者某几个列值整个数据集合占比非常大。

    29220

    Greenplum数据导入系列 -- (一)DataX

    所有数据源数据都先转换为DataX格式,然后转换成目的端数据格式,避免出现各异构数据源之间类型相互转换。...因此,使用DataX前,需要先确认是否存在DataX不支持数据类型,现有数据源数据类型与DataX类型映射如下: Greenplum DataX数据类型 GP数据类型 Long bigint,...说明 并发控制 DataX,可以将一个作业根据策略划分成多个Task,Task作为迁移过程执行最小作业单位等待调度。...并发通道 job.setting.speed,同样存在控制并发导入参数,channel用来控制并发通道数量。...左右时,能够大幅度降低DataX目标数据源之间通信成本,提升导入性能

    8.7K155

    MySQL基础篇(04):存储过程视图,用法特性详解

    一、存储过程 1、概念简介 存储程序是被存储服务器组合SQL语句,经编译创建并保存在数据库,用户可通过存储过程名字调用执行。存储过程核心思想就是数据库SQL语言层面的封装与重用性。...使用SQL语句访问视图时候,获取数据是MySQL从其它表中生成,视图同一个命名空间。...4、视图实现 临时表算法 服务器会把视图查询SQL数据保存在临时表,临时表结构视图字段结构一致,这样是SQL查询优化中最忌讳操作,数据量稍微偏大,就会严重影响性能。...区别方法 执行如下查询语句,可以分析执行性能参数。...这里SQL执行分析语法后面优化部分再详解。 5、注意事项 性能问题 MySQL并不支持视图中创建索引,使用视图时候可能会引发很多查询性能问题,所以建议使用时候要慎重,多角度审视测试。

    1.7K30

    SQL 基础(二)数据表创建、约束、修改、查看、删除

    ARRAY 元素固定长度有序集合 MULTISET 元素可变长度无序集合 数据表示方式 长度 N 、精度 P 、小数位数 S numeric(P,[S]) 表示数据精度为 P,小数位数为 S...) Sex nchar(1) default '男', Age int, -- 定长 4,精度10,小数位数0(本字段可存放10位无小数点整数,4字节大小) 无需设置精度小数位数 Dept nvarchar...NULL ,PRIMARY KEY 约束一列或多列组合,任意列都不能出现 NULL 值 同一列或同一组列,不能同时定义 PRIMARY KEY UNIQUE 列约束 -- PRIMARY KEY...既可表约束又可列约束 为保证参照完整性,系统保证外键取值为: 空值 主键取值 换言之,外键存在至少需要两张表,第一张表作为主键属性第二张表(从表,参照表)做普通属性,则此键称为第一张表(主表...TC ADD CONSTRAINT Score_chk CHECK(Score BETWEEN 0 AND 100) ALTER 注意: 列名不可变 含 NULL 值得列不可指定为 NOT NULL 存在于列数据不可改变数据类型

    1K20
    领券