mysql - 在 1 亿+ 字符串中有效地搜索存在 5000 次

标签 mysql search optimization

我有一个包含 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/

相关文章:

c# - 如何优化 "real-time"C#写文件和MATLAB读文件操作

找不到 mysqldump (Wordmove)。如何在 Zsh 中正确设置符号链接(symbolic link)?

php - 如何使用 appcelerator titanium 和 php 将数据从 sqlite 数据库插入远程 mysql 数据库

ios - NSPredicate 数组包含问题

c - 递归搜索一个目录,编译错误我看不懂

python - 在python中生成除数数组

mysql - 带外键约束的sql删除

php - 数据未注册到数据库

search - ElasticSearch - 更新或新索引?

mysql - 通过组合表来增加 JOIN 查询响应时间