我想从字符串连接的值创建一个哈希值。生成的散列稍后应用作mysql数据库中的unique index。
问:哪种类型的散列最适合用作数据库中的唯一索引?当然,对于相同的输入,散列必须始终相同。
可能有几种选择:
string.hashCode();
UUID.nameUUIDFromBytes(string.getBytes());
org.apache.commons.codec.digest.DigestUtils.sha256Hex(string);背景:
我想将一个100GB+ csv文件导入到mysql数据库表中。我控制着csv文件的生成。文件是通过LOAD DATA LOCAL INFILE INTO TABLE插入的...
我想指定22列中应该表示unique index的20列。如果将某一行加载到表中,并且唯一索引已经存在,则应该跳过该行。
因此,我可能不得不在LOAD DATA中使用IGNORE关键字。
但是,在20列上创建唯一索引可能会减慢插入速度。因为我只需要用来忽略“重复”行的索引,所以我想我也可以创建一些额外的hash列,然后直接写入csv文件。
问题:
1)对于唯一id,使用单个散列更好,还是应该在20个数据库列上创建唯一id?
2)如何才能最好地在由这20列连接的大字符串上创建唯一的hash?
发布于 2018-04-25 19:41:53
为此,我建议使用SHA256或MD5。每次实例化String.hashCode()时,它都会发生变化。
https://stackoverflow.com/questions/50021177
复制相似问题