@vyperlook that was my conclusion as well. That said I located some stop-gap resources.
In my situation I discovered that the plugin “FeedWordPress” (which aggregates other RSS feeds and whatnot) was aggregating from a “poisoned well“, meaning that someone in the RSS pool was pulling an RSS feed from someone else in the pool, thus creating an infinite loop. Bad news indeed. In the matter of a couple months it turned 684 real articles into over 300,000+ copies of these articles.
It appears that the FeedWordPress plugin has no logic to identify duplicates/copy posts. I think this would be a nice feature to add.
Removing Duplicate Posts
So for me the task became turning off the plugin and clearing out the duplicates posts, as well as the unused wp_postmeta and wp_term_relationships.
Helpful Plugins
WP-Cleanup (will delete unused postmeta but CAN take many hours)
WP-DBManager (helps examine the database and quickly repair/optimize)
Remove duplicate entries / rows a mySQL database table
https://www.justin-cook.com/wp/2006/12/12/remove-duplicate-entries-rows-a-mysql-database-table/
CREATE TABLE new_table as
SELECT * FROM old_table WHERE 1 GROUP BY [column to remove duplicates by];
DROP TABLE old_table;
RENAME TABLE new_table TO old_table;
How To Clean WordPress Database
https://www.allguru.net/web/how-to-clean-wordpress-database
DELETE FROM wp_term_relationships
WHERE NOT EXISTS (
SELECT * FROM wp_posts
WHERE wp_term_relationships.object_id = wp_posts.ID
);
Remove duplicate / unused postmeta through mysql command line
DELETE pm
FROM wp_postmeta pm
LEFT JOIN wp_posts wp ON wp.ID = pm.post_id
WHERE wp.ID IS NULL;
I’m still cranking on one of the three databases, cleaning up duplicates, and it’s taking forever, so much so that I have to stop apache2 at night run the command line mysql commands and then kill it in the morning, restart apache2, repair the tables and then do it all over the next night… I’ve been doing that for two nights in a row and it is only about half way done by my estimation.