php - 如何缩小 MySQL 结果以提高 PHP 效率?
问题描述
在 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
}
在此搜索“相似性”变得更加容易和快捷。'下来蜂巢',一个文件。
现在,将其扩展到您的所有音乐库。在 1 个文件中,您的查询只是对具有该信息的 1 个文件的读取。它是一个索引您的数据库的文档。查询比读取所有记录等要快,结果有 SQL id 可以读取。
它通过人们搜索的更多小信息来丰富您当前的数据库,从而加快查询速度。
我将用一个很好的例子进行编辑,但上面应该得到它的主要内容。
推荐阅读
- apache-spark - 从 Azure Databricks 运行 JAR 时出现 Spark 提交错误
- javascript - 在语法检查之前运行 babel 插件
- r - 尝试依赖 RcppAmadillo 时出现未定义符号错误
- python - 需要帮助将列表写入 config.ini
- wordpress - 单个帖子的自定义帖子类型 REST API 自定义端点(按 ID)
- python - 具有多个连续目标的 scikit-learn 回归
- uiviewcontroller - Xcode11 不允许将标签连接到不同视图控制器上的 IBOutlet
- python - 如何在使用 groupby() 时忽略 pandas 数据框中具有唯一索引的几行?
- bash - 在 Bash Shell(或更好的方法)中以编程方式执行剪贴板内容
- android - NavigationUI.setupActionBarWithNavController 在 Android 在后台杀死应用程序后导致应用程序在启动时崩溃