我必须使用一组$ string,md5($ string)CSV文件填充数据库,本质上是一个哈希查找表。
我的问题是: 我应该将字符串用作主键吗?哈希?添加额外的ID列?
我认为哈希会很好,因为那就是我要问的数据库,但是哈希可能会发生碰撞,但是字符串应该是唯一的(为了节省空间)但是我想要第二个意见。
考虑到性能,我会考虑至少35GB的数据。所以任何建议都值得赞赏
答案 0 :(得分:0)
如果该字符串将用于外键引用,那么我不会(必然)推荐散列。你可以:
name
上创建唯一索引。这应该有助于在表格中进行查找以及验证name
是唯一的。对于外键引用,使用固定长度的数字比使用可变长度字符串更好。
如果您使用哈希值并且实际上不需要重复项,那么您需要一些机制来区分具有相同哈希值的不同字符串。一个自然的选择是某种增量计数器 - 但这会让你非常接近解决方案只有计数器和没有哈希。我本身并不认为在表中存储这样的哈希值的优势。
答案 1 :(得分:-1)
我最终使用了SERIAL id字段,所以我可以计算我有多少次。
最初的问题开始了,因为我认为你只使用PRIMARY KEY索引列。
现在问题解决了,我只是正确索引,性能很棒!