Задать вопрос
@User782
Кратко о себе

Каким способом можно ускорить выполнение скрипта по поиску похожих записей и их удаление из базы (пример скрипт в вопросе)?

Скрипт выполняется очень долго. Три миллиона записей будут обрабатываться месяцы.
Делаю удаление похожий записей таким скриптом.
Суть скрипта. Берем записи по порядку по id и сверяем их со всеми записями, если процент показывает схожесть, сверяемые записи удаляются.

//берем записи по порядку и пробегаем базу
$row_res = mysql_query("SELECT id, title FROM blog WHERE st = 0 ORDER by id");

         while ($row = mysql_fetch_assoc($row_res)) {

                   $str = $row['title'];    
 
                   //ставим в базу 2, означает - запись уже обработана
                   mysql_query("UPDATE blog SET st = 2 WHERE id = $row['id']");



                              //пробегам все записи и сверяем с взятой записью
                              $rows_res = mysql_query("SELECT id, title FROM blog WHERE st = 0 ORDER by id");

                                               while ($rows = mysql_fetch_assoc($rows_res)) {

                                                         $sim = similar_text($row['title'], $rows['title'], $perc);
                                                         $sims = round($perc);
                                                         if($sims > 73) {mysql_query("DELETE FROM blog WHERE id = $rows['id']");}
}
}


но такой скрипт очень долго обрабатывает три миллиона записей. Пару месяце примерно выйдет.

Есть ли способ ускорить?
  • Вопрос задан
  • 155 просмотров
Подписаться 1 Средний 29 комментариев
Ответ пользователя Виталий Качан К ответам на вопрос (2)
MANAB
@MANAB
Разрабатываю на C#: Web, Desktop, Gamedev
Перепиши логику similar_text в функцию. Или всю логику удаления в хранимую процедуру. Или хотя бы логику отмечания, чтобы потом дополнительным скриптом удалить, но ты по крайней мере предварительно сможешь узнать, какие именно данные будешь удалять и проверить их перед этим.
Ответ написан
Комментировать