我有一个包含 1.21 亿个字符串的文本文件,我想执行 5000 次搜索是否存在(即给定字符串是否存在于此文本文件中),我想在 2 秒或更短时间内完成这 5000 次检查。
我想到了不同的方法来做到这一点,我尝试将文本文件中的所有这些字符串放入一个 SQL 表中,该表的主索引位于字符串列上,并执行此查询 5000 次:
select * from table where string=given_string
然后检查结果是否存在,但是这种方式导致整个 5000 条查询的执行时间非常长,在 20 到 30 秒之间。
我想知道是否有一种有效的方法来索引/处理这些数据并以有效的方式在其中搜索 5000 次。
最佳答案
您可以添加另一个(临时)表(甚至在内存中)并在其中批量插入 5000 个搜索值。然后创建一个查询,将此表连接到您的大表。
这样你只有 2 个查询而不是 5000 个。
也许这会加快速度。
关于mysql - 在 1 亿+ 字符串中有效地搜索存在 5000 次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38307947/