• DataType--数值类型


    SQL Server数值类型可以分为精确数字类型和近似数字类型
    精确数字
    BIT/SMALLINT/TINYINT/INT/BIGINT
    NUMERIC/DECIMAL/SMALLMONEY/MONEY
     
    近似数字
    FLOAT/REAL
    --================================================
    类型: bigint
    范围: -2^63 (-9,223,372,036,854,775,808) 到 2^63-1 (9,223,372,036,854,775,807)
    存储: 8 字节
     
    类型: int
    范围: -2^31 (-2,147,483,648) 到 2^31-1 (2,147,483,647)
    存储: 4 字节
     
    类型: smallint
    范围: -2^15 (-32,768) 到 2^15-1 (32,767)
    存储: 2 字节
     
    类型: tinyint
    范围: 0 到 255
    存储: 1 字节
    --================================================
    decimal[ (p[ , s] )] 和 numeric[ (p[ , s] )]
    固定精度和小数位数。使用最大精度时,有效值从 - 10^38 +1 到 10^38 - 1。
    numeric 在功能上等价于 decimal。
    默认精度为 18。
    p(精度)最多可以存储的十进制数字的总位数,包括小数点左边和右边的位数
    s (小数位数)小数点右边可以存储的十进制数字的最大位数。
    decimal和numeric的存储空间与精度相关
    精度:  1 - 9
    存储字节数:5
     
    精度:  10-19
    存储字节数: 9
     
    精度: 20-28
    存储字节数: 13
     
    精度: 29-38
    存储字节数: 17
     
    --================================================
    货币数据类型
    类型: money
    范围:  -922,337,203,685,477.5808 到 922,337,203,685,477.5807
    存储:  8 字节
     
    类型:smallmoney
    范围:   -214,748.3648 到 214,748.3647
    存储:  4 字节
     
    --================================================

    浮点数类型
    浮点数据为近似值;并非数据类型范围内的所有值都能精确地表示。
    类型: real
    范围: -3.40E + 38 至 -1.18E - 38、0 以及 1.18E - 38 至 3.40E + 38
    存储: 4 字节
    类型: float
    范围: -1.79E + 308 至 -2.23E - 308、0 以及 2.23E - 308 至 1.79E + 308
    float [ ( n ) ] 其中 n 为用于存储 float 数值尾数的位数(以科学记数法表示)
    当n在 1-24 区间时,精度为 7,存储空间为 4 字节
    当n在 25-53 区间时,精度为 15,存储空间为 8 字节
    real相当于float(24)
    由于float存放范围内的近似值,不用精确地存储范围内所有可能的值,所有在相同的存储空间内,浮点数可以存放比精确类型范围更大的数据
    浮点数在存放和读取时,需要按照一定公式对数据进行转换,因此会有一定的性能损耗

     
    --================================================
    在考虑数据类型时,需要考虑以下方面:
    1>数据范围和精度
    2>类型占用的空间
    3>类型是简单类型还是复杂类型,复杂类型会造成额外的消耗
      Simple data types align more directly to native processor types. Complex data types require CPU to review type metadata and to perform branching.

    4>类型是定长还是边长,变成类型在数据更新时可能造成数据移动和页拆分
    Because a variable-length data type may incur a memcpy when moving, causing additional CPU overhead, use a fixed 8-byte or 4-byte integer assignment if possible.

    5>类型的存储形式,近似数值类型在读取和存放时需要额外的转换
    Incurs less overhead if the data type is composed of native literals (e.g., int, uint, long, ulong) instead of approximate data types (e.g., float).

    6>压缩后的存储空间
    A.不同的数值类型压缩比不一样
    B.相同的数据值类型的值大小不一样,压缩后存放空间不一样

  • 相关阅读:
    ABAP 捕获回车键更新值
    拼接报错信息
    你知道什么叫金丝雀分布吗?你知道如何在Service Mesh微服务架构中实现吗?
    java代码在阿里云函数计算中的应用
    创投机构BP联系方式3
    迁移到RDS或者腾讯云MYSQL实例发生sql_mode=only_full_group_by错误的解决
    我国广告业存在的问题
    【微信小程序】固定头部,只滚动内容部分功能
    低智商屌丝蒟蒻的2012成都题解
    罪过啊,废了好大的力气才搞出了 Kth 数
  • 原文地址:https://www.cnblogs.com/TeyGao/p/3522683.html
Copyright © 2020-2023  润新知