在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;
上一篇:c-无法再打印pi的小数


下一篇:python-float对象没有属性__getitem__