我想知道存储大量字符串和检查重复的最佳方法是什么。
我们必须考虑我们的优先事项:
当我们的目标是快速重复检查和插入新字符串时,最好的解决方案是什么(随机访问或存储空间无关紧要)?我想到了 SQL 数据库,但是哪个 DB 最适合这个解决方案?如果我们使用 SQL DB,比如 MySQL,哪个存储引擎会是最好的?(当然,由于数据量,我们必须排除内存)
对输入字符串使用哈希函数。输出哈希将是记录的主键/ID。
然后你可以检查数据库是否有这个哈希/id/主键:
您必须根据速度和预期的字符串数量以及哈希冲突要求/保证来考虑使用哪种哈希函数/方案/强度。
解决冲突的几种方法:
当然,根据这需要有多持久以及您希望占用多少内存/字符串数量,您实际上可以在没有数据库的情况下直接在内存中执行此操作,这会快得多。