我的数据超过了20000000行。我想将一个列(将数字存储为字符串)转换为十进制格式,以便搜索更快。
但是,如果我通过Java尝试将数据加载到结果集中,则会显示结果集崩溃或显示java堆内存错误。
有没有办法修改每条记录,以便可以转换字符串值并将其保存为新列中的小数值?
答案 0 :(得分:2)
你应该把Java从等式中解放出来 - 原始SQL可以做到这一点。最好的方法是添加一个新列,将新列设置为现有字符串列的十进制转换值,然后(如果您愿意)删除旧字符串列并重命名新列。
例如,如果你正在使用MySQL,这看起来像是:
ALTER TABLE mytable
ADD COLUMN newcolumn DECIMAL(10,2);
UPDATE mytable
SET newcolumn = CAST(oldcolumn AS DECIMAL(10,2))
WHERE true;
ALTER TABLE mytable
DROP COLUMN oldcolumn,
CHANGE newcolumn oldcolumn DECIMAL(10,2);