在查询行时或在 PHP 上使用 Levenstein 是否更快?

IS it faster to use Levenstein while querying rows or on PHP?

目前我正在使用以下查询:(我正在使用 levenshtein()

的以下 implmenetation
SELECT title FROM db_full WHERE MATCH (`Title`) AGAINST ('Harry Potter and the Deathly Hallows' IN BOOLEAN MODE) AND levenshtein('Harry Potter and the Deathly Hallows', `Title`) BETWEEN 0 AND 15

我想知道使用 MySQL + PHP 的组合是否更快

$testQ = "SELECT title FROM db_full WHERE MATCH (`Title`) AGAINST ('Harry Potter and the Deathly Hallows' IN BOOLEAN MODE)";
} 
result = $conn->query($testQ);

while ($row = $result->fetch_assoc()) {
   $distance = levenshtein($v,$row['title']); 

 // using the if condinational for the distance
}

哪个程序会更快更有效?

一般来说,"Which is faster"的正确答案是"Try it on your system and your data"。在这种情况下, 的最佳答案。我不知道哪个系统(MySQL 或 PHP)有更快的 Levenshtein 实现。可能没有人这样做,因为这取决于系统配置。

有理由认为在数据库中完成工作会更快:

  • 数据库服务器往往比机器 运行 应用程序更强大。
  • 运行 数据库中的代码将减少从服务器传递到应用程序的数据量。

从可维护性(美学?)的角度来看,我更喜欢将所有逻辑置于同一位置,因此这是在数据库中完成工作的另一个理由。但是,这与性能关系不大。

但是,传回的数据量可能非常小,并且 PHP 的 Levenshtein 实现比 MySQL 更好。如果边际性能改进对您的应用程序很重要,您应该测试这两种方法。