В настоящее время я использую следующий запрос: (Я использую следующий implmenetation из 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
}
Какая процедура будет быстрее и эффективнее?
В общем, правильный ответ на вопрос «Что быстрее» — «Попробуйте в своей системе и на своих данных». В этом случае это является лучший ответ. Я не знаю, в каких системах (MySQL или PHP) реализована более быстрая реализация Левенштейна. Вероятно, никто не делает, потому что это зависит от конфигурации системы.
Есть основания полагать, что выполнение работы в базе данных будет быстрее:
С точки зрения ремонтопригодности (эстетической?), Я предпочитаю, чтобы вся логика находилась в одном месте, так что это еще один аргумент для работы в базе данных. Однако это не имеет ничего общего с производительностью.
Тем не менее, возможно, что объем данных, передаваемых обратно, довольно мал, и что PHP имеет лучшую реализацию Левенштейна, чем MySQL. Вам следует протестировать два подхода, если для вашего приложения важно улучшение предельной производительности.
Других решений пока нет …