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.相同的数据值类型的值大小不一样,压缩后存放空间不一样

DataType--数值类型的更多相关文章

  1. .Net判断一个对象是否为数值类型

    这乍一听是个很简单的事,但突然搞起来还真有点无从下手的感觉. 首先当然是通过GetType()方法反射获取其类型信息,然后对其进行分析,但是类型信息Type中并没有简单地给出这么一个属性进行判断. 老 ...

  2. bootstrap-table不分页时对数值类型数据的排序

    html中的代码 <table id="table"></table> sortData.json的数据如下 [ {"name":&qu ...

  3. Python黑帽编程2.2 数值类型

    Python黑帽编程2.2  数值类型 数值类型,说白了就是处理各种各样的数字,Python中的数值类型包括整型.长整型.布尔.双精度浮点.十进制浮点和复数,这些类型在很多方面与传统的C类型有很大的区 ...

  4. MySQL的数值类型,时间

    数值类型 整数型 tinyint  smallint  mediumint  int|integer  bigint 注意: 1, 如何选择数据类型,我们的原则是:够用就行!尽量的选择占用内存小的整型 ...

  5. .Net判断一个对象是否为数值类型探讨总结(高营养含量,含最终代码及跑分)

    前一篇发出来后引发了积极的探讨,起到了抛砖引玉效果,感谢大家参与. 吐槽一下:这个问题比其看起来要难得多得多啊. 大家的讨论最终还是没有一个完全正确的答案,不过我根据讨论结果总结了一个差不多算是最终版 ...

  6. MySQL数据类型——数值类型

    1.1.1 整型 整型 占用字节 范围 范围 tinyint 1 -27~27-1 -128~127 smallint 2 -215~215-1 -32768~32767 mediumint 3 -2 ...

  7. C++中string转化为常用数值类型

    //模板类 用于将string类型转化为 常用数值类型 template <class Type> Type stringToNum(const string& str) { is ...

  8. MySQL(7):数值类型

    1. 数值类型  

  9. 005 Python的数值类型

    005 Python的数值类型 BIF    指的是内置函数,一般不作为变量命名.如 input,while,if,else,float,等等.整型:整数.(python3.0版本把整型和长整型结合在 ...

  10. 使用Convert 类和Parse方法将字符串转换为数值类型

    //用Parse方法将字符串转换为数值类型; long num=Int64.Parse(args[2]) //用别名为Int64c#类型long; long num=long.Parse(args[2 ...

随机推荐

  1. 【转】Jmeter和LR上传文件和下载

    背景: 在某个申请业务中,需要上传附件文件,然后才能提交该申请 遇到的问题: 1,  在使用Jmeter或者LR进行录制时,无法录制到上传文件的请求,只能通过Fiddler能查看到该请求 2,  因为 ...

  2. 有趣的java小项目------猜拳游戏

    package com.aaa; //总结:猜拳游戏主要掌握3个方面:1.人出的动作是从键盘输入的(System.in)2.电脑是随机出的(Random随机数)3.双方都要出(条件判断) import ...

  3. 微信小程序之wx.requestPayment 发起微信支付

    wx.requestPayment 发起微信支付 timeStamp 时间戳 nonceStr 随机字符串 package 统一下单接口返回的 prepay_id 参数值 signType 签名算法 ...

  4. Linux内核中常见内存分配函数

    1.      原理说明 Linux内核中采用了一种同时适用于32位和64位系统的内存分页模型,对于32位系统来说,两级页表足够用了,而在x86_64系统中,用到了四级页表,如图2-1所示.四级页表分 ...

  5. xp远程桌面连接最大用户数怎么设置?

    1.首先到网上去百度下载“补丁UniversalTermsrvPatch”,这个补丁主要目的是在于去除“单用户登陆的限制”,允许多人多用户同时并行访问登录;2.然后根据自己的系统运行对应的程序:系统是 ...

  6. mysql忘记root密码的处理方法

    在linux下,如果忘记了mysql中root用户的密码可以采用以下办法解决. 1. 修改my.cnf,加入skip-grant-tables 修改mysql的配置文件my.cnf,在[mysqld] ...

  7. Storm集群详细部署

    1.安装zookeeper 3.1下载zookeeper安装包, 建议下载3.4.5及以上的版本 http://www.apache.org/dyn/closer.cgi/zookeeper/ 3.2 ...

  8. Android独立交叉编译环境搭建

    我们经常需将一些C/C++源码编译成本地二进制,直接在android的linux内核上运行,这是就需要进行交叉编译.由于Android的运行环境核普通Linux又区别,所以常规方式针对ARM进行交叉编 ...

  9. s3c6410存储器映射

    1.引导镜像区 0x0000_0000~0x07FF_FFFF 2.内部存储区 (1) 内部ROM 0x0800_0000~0x0BFF_FFFF (2) 内部SRAM 0x0C00_0000~0x0 ...

  10. Python三元运算和lambda表达式

    一.三元运算 1.定义:三元运算是if-else 语句的快捷操作,也被称为条件运算. 2.结构: [on_true]  if  [expression]  else  [on_false] 3.示例: ...