3 дек. 2016 г.

Поиск и удаление дублированных постов в wordpress.

Проблема в следующем , имеется блог со статьями более 100 000 статей, объем базы MySQL около 5ти Gb, в таблице имеются дублированные публикации то есть одинаковые статьи которые мешают и занимают место в Базе Данных.

Рецепт для поиска одинаковых постов в базе MySQL такой:



SELECT a.ID, a.post_title, a.post_type, a.post_status FROM wp_posts AS a INNER JOIN ( SELECT post_title, MIN( id ) AS min_id FROM wp_posts WHERE post_type = 'post' AND post_status = 'publish' GROUP BY post_title HAVING COUNT( * ) > 1 ) AS b ON b.post_title = a.post_title AND b.min_id <> a.id AND a.post_type = 'post' AND a.post_status = 'publish'

После выполнения этого запроса к базе данных, появится результат выборки из таблицы wp_posts , всех ее столбцов ID, post_title, post_type, post_status с дублированными заголовками статей, так как выборка и сравнение осуществляется по заголовку названия статей из post_title .



Рецепт для удаления дублированных постов из MySQL такой:

DELETE a.* FROM wp_posts AS a INNER JOIN ( SELECT post_title, MIN( id ) AS min_id FROM wp_posts WHERE post_type = 'post' AND post_status = 'publish' GROUP BY post_title HAVING COUNT( * ) > 1 ) AS b ON b.post_title = a.post_title AND b.min_id <> a.id AND a.post_type = 'post' AND a.post_status = 'publish' 



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

Комментариев нет:

Отправить комментарий