在查询行时或在 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 更好。如果边际性能改进对您的应用程序很重要,您应该测试这两种方法。
目前我正在使用以下查询:(我正在使用 levenshtein()
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 更好。如果边际性能改进对您的应用程序很重要,您应该测试这两种方法。