将c++int转换为VARBINARY,然后再转换回来
convert c++ int to VARBINARY and back again
我刚刚发现,除了VAR
之外,所有数据类型的LENGTH
s都不会发生变化。这让我觉得效率极低,因为可能有INT
字段(如autoincrement
PRIMARY
(永远不会改变,BIGINT
列中的1
将占用全部8个字节。
我有很多列,一旦插入就不会改变,但有很大的潜力。我希望使用VARBINARY
,而不是使用所有的BIGINT
列。
我想在c++中将数据操作为int
,但在mysql中将其存储为VARBINARY
。
如何在c++中进行这些转换?
我强烈建议不要这样做。
如果你查看VARCHAR
的MySQL文档,你会发现
CCD_ 13值被存储为1字节或2字节长度的前缀加上数据。长度前缀表示值中的字节数。
让我们取一个64位的值,如0xDEADBEF2B84F00D。如果将其存储在BIGINT
字段中,则需要8个字节(存储为二进制值(
如果您将其存储为VARCHAR
,即使您假设数字始终是十六进制的,我们也会说长度字段是1或2个字节,然后是十六进制字符的另外16个字节!18字节,并且由于必须转换为ASCII/从ASCII转换而损失性能,这是一个可怕的权衡!
让我们看看相反的情况,0x01。存储在BIGINT
字段中,它仍然是8个字节。使用与以前相同的约定,数据库中可能有3个字节。在我看来,这根本不值得。尤其是当您考虑到数据库在使用一堆ASCII数据时会表现得多么糟糕时。
只是不要这么做。按照设计的方式使用数据库。
我认为这是一个失败的命题。除非你能证明你的数据在不使用拼凑的情况下根本不适合你的系统,否则我认为你最好坚持使用整数值的整数类型。否则,如何防止有人在你的数字ID列中插入"你好",以及你查询看起来不像数字的数字会有多高兴?总体来说可能也会慢一些。
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 从/到 UTF-8/UTF-16 的转换需要(例如:utf8 -> 代码点,然后代码点到 utf16)或(例如:utf8 -> utf16)?
- 使用 GDI+ 旋转位图,然后转换为 HDC
- 将子字符串字符从字符串值转换为 int,然后将其分配给 int 变量
- 将函数应用于元组中的每个元素,将每个元素强制转换为类型包中的不同类型,然后作为参数包传递
- 检查字符串是否是数字,然后将该数字转换为 int?
- 将 char[] 数组转换为字节,然后将字节转换为 int,反之亦然
- 将多映射转换为空指针,然后转换回多映射
- 将 int 转换为字符串,然后连接另一个变量以创建完整扩展名,然后将其转换为 const_char*
- 如何将两个 jlong 数据类型转换为 jstring,然后将两个字符串连接在一起以便从 JNI 将字符串返回给 jav
- 将40个字节长的数据框从十六进制转换为二进制,然后转换为十进制
- strtoull() 的输出在转换为双精度然后又转换为 uint64_t 时会失去精度
- 将整数向量转换为字节数组向量,然后调用每个字节数组
- 将无符号字符转换为字符串,然后再次转换为无符号字符
- 将不同的类转换为void*,然后在C 中安全地返回
- 将整数转换为字符数组,然后将其转换回来
- 您如何通过函数的void指针将int值传递,然后将其转换回int值
- 将Space分离的值文本转换为使用C 的.CSV,然后保存
- 获取一个输入字符串,将其转换为其十六进制值,然后将其十六进制存储为 int
- 为什么在C++中向下转换然后分配给基类