MySQL位数据类型

标签(空格分隔): 高性能MySQL 第四章 schema与数据类型 MySQL位数据类型


  以InnoDB为例说明

  1. InnoDB为每个BIT列使用一个足够存储的最小整数类型来存放,所以不能节省存储空间。MySQL把BIT当作字符串类型,而不是数字类型。但在数字上下文场景中,会转换成数字。
    例:

    mysql> CREATE TABLE bittest(a bit(8));
    mysql> INSERT INTO bittest VALUES(b'00111001');
    mysql> SELECT a, a + 0 FROM bittest;
    +------+-------+
    | a    | a + 0 |
    +------|-------+
    | 9    |    57 |
    +------+-------+
  2. SET
      如果需要存储很多true/false值,可以考虑合并这些列到一个SET数据类型,它在MySQL内部是以一系列打包的集合来表示的。这样就有=有效地利用了存储空间,并且MySQL有像FIND_IN_SET()和FIELD()这样的函数,方便地在查询中使用。缺点是改变列的定义需要ALTER TABLE,代价较高。一 般来说,也无法在set列上通过索引查找。

  3. 在整数列上进行按位操作
      一种替代SET的方案是使用一个整数包装一系列的位,如把8个位包装到时TINYINT中,并且按照位操作来使用。在代码里存取对应关系,缺点是难以理解,如第五个bit设为true表示什么?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值