gpt4 book ai didi

java - 如何将 Java 中的 150 位整数(或 30 个 5 位整数)转换为 mysql 中的高效存储格式?

转载 作者:行者123 更新时间:2023-11-30 22:26:30 26 4
gpt4 key购买 nike

在 java 程序中,我有 1..30 个 5 位整数,我想将它们有效地存储在 mysql 中。我一次收到数字 5。在 mysql 调用之前,5 位整数的数量是未知的,但最大总数将是 150 位整数。我知道每个 5 位整数都在 00000..99999 之间,可以使用 17 位 (2^17 = 131072) 存储。 17位乘以最多30个5位整数是510位,可以用64字节表示。

我想我会为表中的列使用 VARBYTE(64) 数据类型。我想知道:

  • 对于表示这个 5..150 位数字所需的最大字节数,我的计算是否正确
  • 在 Java 中,将 blob 插入表中的最有效方法是什么?

编辑:
写完问题后,我决定尝试用 Java 构建一个 BitSet 并从中构建一个字节数组。我的总体目标是在 mysql 中对这些 blob 进行选择。

最佳答案

将整数存储为 VARCHAR(179)(5 位数字 * 30 个数字 + 29 个分隔符)。例如:

key            values
------------- ----------------------
'some value' '123,7777,839,9843'

您可以使用 INSERT... ON DUPLICATE KEY 更新您的表格声明

INSERT INTO tbl (`key`,`values`) VALUES ('some value', '555,345')
ON DUPLICATE KEY UPDATE `values` = CONCAT(`values`, ',', '555,345');

然后使用 FIND_IN_SET 过滤行功能。像这样

SELECT * 
FROM tbl
WHERE FIND_IN_SET('123', `values`);

在 Java 中,如果 int 只需将整数保留为数组,并使用简单的字符串连接更新列。只需将整数值转换为字符串即可。

如果要优化,只需在必要的列上放置索引并对其进行基准测试即可。

关于java - 如何将 Java 中的 150 位整数(或 30 个 5 位整数)转换为 mysql 中的高效存储格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35069020/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com