Проблема в следующем , имеется блог со статьями более 100 000 статей, объем базы MySQL около 5ти Gb, в таблице имеются дублированные публикации то есть одинаковые статьи которые мешают и занимают место в Базе Данных.
Рецепт для поиска одинаковых постов в базе MySQL такой:
После выполнения этого запроса к базе данных, появится результат выборки из таблицы wp_posts , всех ее столбцов ID, post_title, post_type, post_status с дублированными заголовками статей, так как выборка и сравнение осуществляется по заголовку названия статей из post_title .
Рецепт для удаления дублированных постов из MySQL такой:
Рецепт для поиска одинаковых постов в базе 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' Прежде чем выполнять данные рецепты не забудь сделать резервную копию базы данных.
Комментариев нет:
Отправить комментарий