Php 将DB表加载到数组与在DB表中搜索的性能权衡

Php 将DB表加载到数组与在DB表中搜索的性能权衡,php,mysql,regex,arrays,nlp,Php,Mysql,Regex,Arrays,Nlp,我有一个文本文档,它将被加载到字符串中,需要在MySQL的关键字表中搜索匹配关键字的内容 将MySQL中的关键字加载到PHP数组(使用关键字作为关键字)中,然后通过迭代文本的Ngram对该数组进行搜索是否更好?或者最好遍历字符串的Ngram,然后根据MySQL数据库搜索每个字符串(这会导致许多数据库查询)?取决于索引的大小和检查的单词数等。例如,将1GB的MySQL索引加载到PHP内存中,迭代10个单词是否值得?没有 这两种方法都不难实现。基准测试并找出答案。(确保您的数据库已正确索引。)不确定

我有一个文本文档,它将被加载到字符串中,需要在MySQL的关键字表中搜索匹配关键字的内容


将MySQL中的关键字加载到PHP数组(使用关键字作为关键字)中,然后通过迭代文本的Ngram对该数组进行搜索是否更好?或者最好遍历字符串的Ngram,然后根据MySQL数据库搜索每个字符串(这会导致许多数据库查询)?

取决于索引的大小和检查的单词数等。例如,将1GB的MySQL索引加载到PHP内存中,迭代10个单词是否值得?没有


这两种方法都不难实现。基准测试并找出答案。(确保您的数据库已正确索引。)

不确定您将拥有多少个关键字,但无论哪种情况,都会涉及开销

连接到数据库

通过网络发送查询

通过网络接收结果

不确定PHP如何连接数据库,但Java使用“反射”,这不是已知最快的技术之一

即使在数据库中建立索引,也不会得到时间复杂度恒定的结果。但是,如果使用hashmap这样的数据结构,那么每次迭代都需要固定的时间。这意味着,如果您的文档有n个单词,您遍历其中的每一个单词,并检查它是否存在于关键字hashmap中,那么程序的时间复杂度将仅为O(n)


但是,正如其他人所说,你必须运行自己的基准测试,这完全取决于你正在分析的关键字表和文档的大小,取决于大小、引擎、服务器等因素。编写这两个,基准测试,这是唯一确定的方法。变量太多了,没有人能确切地告诉你