Вы можете попытаться извлечь слова из текста и поместить их в запрос SELECT следующим образом:
$words = array_unique(get_words_in_text(...));
$sql = "SELECT * FROM words WHERE word IN (".implode(", ", $words)).")";
Возможно, ваш движок SQL оптимизирует это утверждение. В любом случае соединение с базой данных используется меньше, чем в вашем текущем подходе.
Вы также можете попробовать временно создать отдельную таблицу слов и добавить все слова в тексте в эту таблицу. Затем вы можете выполнить JOIN
с таблицей основных слов. Если обе таблицы проиндексированы правильно, это может быть довольно быстрым.
РЕДАКТИРОВАТЬ: Этот вопрос / ответ предполагает, что создание временной таблицы действительно быстрее (см. Комментарии): mysql select .. where .. in -> optimizing . Тем не менее, это, безусловно, зависит от конкретной базы данных, которую вы используете, размера вашей таблицы слов, размера текстов и конфигурации ваших индексов. Таким образом, я рекомендую оценить оба подхода для вашего конкретного сценария. Пожалуйста, сообщите ваши результаты. : -)