mysql bit 和 tinyint 的区别及使用场景?

关于代表数据类型或状态的字段之前一直用的 tinyint

没关注过bit类型,查阅资料后,知道bit是存储二进制的,格式: b'0'b'1'
其存储的单位直接是 bit ,而 tinyint 的最小单位是1字节。
然而有人说文章说 bit 不支持索引,文章来源:【MySQL】bit 类型引发的故事

个人认为:因为 php 是弱类型的, bit 类型查询没有 tinyint 方便,

据说更适合 java,有知道的麻烦说明下原因?以及他们的区别和使用场景?

阅读 12.1k
1 个回答

tinyint是数字类型,存储小数, 一般对应编辑语言里的小字典或枚举类型. 节省空间的同时, 避免存入超范围的值.
bit类似多用于存储状态. 如bit(1) 直接对应Java语言的布尔类型true和false. 用做状态保存时一个字段可以保存多至64个状态.
如我开发的某个系统需要保存对用户发送短信的状态,有10几种不同类型的短信,每种都要标记发过没有, 这时候用bit类型就很方便,当然用int也能实现, 但用bit更符合语义. 查询或更新某个状态时按位操作即可.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题