mysql — быстрее ли использовать Levenstein при запросе строк или на PHP?

В настоящее время я использую следующий запрос: (Я использую следующий 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
}

Какая процедура будет быстрее и эффективнее?

1

Решение

В общем, правильный ответ на вопрос «Что быстрее» — «Попробуйте в своей системе и на своих данных». В этом случае это является лучший ответ. Я не знаю, в каких системах (MySQL или PHP) реализована более быстрая реализация Левенштейна. Вероятно, никто не делает, потому что это зависит от конфигурации системы.

Есть основания полагать, что выполнение работы в базе данных будет быстрее:

  • Серверы баз данных, как правило, более мощные, чем машины, на которых работают приложения.
  • Запуск кода в базе данных уменьшит объем данных, передаваемых с сервера в приложение.

С точки зрения ремонтопригодности (эстетической?), Я предпочитаю, чтобы вся логика находилась в одном месте, так что это еще один аргумент для работы в базе данных. Однако это не имеет ничего общего с производительностью.

Тем не менее, возможно, что объем данных, передаваемых обратно, довольно мал, и что PHP имеет лучшую реализацию Левенштейна, чем MySQL. Вам следует протестировать два подхода, если для вашего приложения важно улучшение предельной производительности.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]