数据库
首页 > 数据库> > 在MySQL中,BIT列是存储5、6或7字节整数的合适方法吗?

在MySQL中,BIT列是存储5、6或7字节整数的合适方法吗?

作者:互联网

我有一张要减小其大小的表,其中一列可以视为5字节无符号整数.这是我不需要搜索的列.

MySQL提供整数数据类型

> TINYINT,用于1字节整数> SMALLINT,用于2字节整数> MEDIUMINT,对于3字节整数> INT,对于4字节整数> BIGINT,对于8字节整数.

但是,它也提供BIT(M),即1≤M≤64.这有效地存储了0到2M-1的无符号整数.是否有理由避免使用BIT(40)列存储5个字节的整数? (正如我所说,我不需要按此列进行搜索.因此,与查询执行速度有关的任何困难都可以忽略.)

解决方法:

MySQL将BIT视为文本数据而非数字.通常,这就是应避免使用BIT的原因-可能会有些混乱.例如,我们要将数字57存储在BIT(8)列中.数字57将被存储为’b’00111001′,即57的二进制表示.但是由于57是ASCII码’9′,因此它将显示为9.为了获得正确的整数值,您已经将列数据转换为数值.您可以使用以下方法测试此行为:

CREATE TABLE testbit(a BIT(8));
INSERT INTO testbit VALUES (b'00111001');
INSERT INTO testbit VALUES (57);
SELECT a FROM testbit;
SELECT a+0 FROM testbit;

标签:bit-fields,types,mysql
来源: https://codeday.me/bug/20191023/1916431.html