繁体   English   中英

如何缩小 MySQL 结果以提高 PHP 效率?

[英]How to narrow MySQL results for added PHP efficiency?

在 PHP 中,我使用 similar_text 来比较 MySQL 中的数万行。

$mostSimilarText = "";
$mostSimilarPercent = 0;

//SELECT * FROM table

while($row = $stmt->fetch()){ /* 10,000 results*/
    similar_text("hello world", $row["source"], $percentMatch);

    if($percentMatch > $mostSimilarPercent) {
        $mostSimilarPercent = $matchPercent;
        $mostSimilarText = $row["source"];
    }
}
//Now I have the most similar text and percentage.

该代码有效,但运行速度非常慢,尤其是在处理大量结果时。 我的目标是优化它。 我想弄清楚如何限制 MySQL 结果而不是SELECT * FROM table 这将提高效率。

我已经尝试过使用LIKE 'hello world' ,但这将排除诸如“hello word”之类的结果(注意缺少的 L)。 我需要限制 MySQL 结果而不完全消除超过 75% 相似度的文本,或多或少。

有没有人对我如何做到这一点以提高性能有任何提示?

我会建议 DB 的组合。 在我为你做一些例子之前:想象一下你的关系模型都是非关系索引的。

Flat DB/Document DB 会做到这一点。 想一个单一的文件来说类似的话

{
    "name": "Down to the river"
    "artist": "BruCe Boss"
    "sql_id": 1391
}

在此搜索“相似性”变得更加容易和快捷。 'Down the hiver',一个文件。

现在,将其扩展到您的所有音乐库。 在 1 个文件中,您的查询只是对具有该信息的 1 个文件的读取。 它是索引数据库的文档。 查询比读取所有记录等更快,并且结果具有可以读取的 SQL id。

它通过人们搜索的更多小信息丰富您当前的数据库,从而加快查询速度。

我将用一个很好的例子进行编辑,但上面应该得到它的主要内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM