Cleanup WordPress post revisions

Home » Web applications » WordPress » Cleanup WordPress post revisions

Every time you write or edit a WordPress post, WordPress saves the change as a post revision. As you might expect, this fills up your database with a huge amount of unneeded post revisions and information. This uses space which should be free space, the MySQL database becomes bloated. You can clean up these WordPress post revisions quite easily, you only need one (1) simple SQL statement.

Clean up WordPress post revisions easily with one (1) simple SQL statement. Delete WordPress post revisions, turn them off and speed up your WordPress blog.

To delete the WordPress post revisions you only need one SQL statement. Execute this SQL query to remove all post revisions from your MySQL database:

Remove WordPress post revisions with an SQL statement

DELETE a, b, c
FROM `wp_posts` a
LEFT JOIN `wp_term_relationships` b ON a.id = b.object_id
LEFT JOIN `wp_postmeta` c ON a.id = c.post_id
LEFT JOIN `wp_term_taxonomy` d ON b.term_taxonomy_id = d.term_taxonomy_id
WHERE a.post_type = "revision"
AND d.taxonomy != "link_category";
DELETE from `wp_posts` WHERE post_type="revision";

This’ll remove all WordPress post revisions, your MySQL database is smaller and faster! Don’t forget to change wp_ with your database table prefix.

Limit or disable WordPress post revisions

The maximum number of saved revisions can be configured in the wp-config.php file. To save a maximum of five revisions, use:

define( 'WP_POST_REVISIONS', 5 );

Or to completely disable the WordPress post revision functionality, use:

define( 'WP_POST_REVISIONS', false );

However, according (Wayback Machine archive link) to Mike Little (the co-founder of WordPress), WordPress database queries do not retrieve revisions. The number of revisions should have no effect on the queries. The only time the revisions are retrieved is on the edit page of the individual post. There is no impact on the front end speed of your site.

The post revision feature can be a lifesaver.

Bonus: Cleanup comment and post meta data

If you want to clean up your WordPress MySQL database even further, then you can use the following SQL queries / statements to lookup and remove post meta data and comment meta data. Don’t forget to set your table prefix.

-- Clean WordPress Post Meta Data
SELECT * FROM wp_postmeta pm LEFT JOIN wp_posts wp ON wp.ID = pm.post_id WHERE wp.ID IS NULL;
DELETE pm FROM wp_postmeta pm LEFT JOIN wp_posts wp ON wp.ID = pm.post_id WHERE wp.ID IS NULL;

-- Clean WordPress  Comment Meta Data
SELECT * FROM wp_commentmeta WHERE comment_id NOT IN ( SELECT comment_id FROM wp_comments );
DELETE FROM wp_commentmeta WHERE comment_id NOT IN ( SELECT comment_id FROM wp_comments );

SELECT * FROM wp_commentmeta WHERE meta_key LIKE '%akismet%';
DELETE FROM wp_commentmeta WHERE meta_key LIKE '%akismet%';

As always: use with care.

Summary

  • WordPress saves post revisions, which can bloat your MySQL database and reduce speed.
  • You can easily clean up WordPress post revisions with one SQL statement to enhance database performance.
  • To limit or disable post revisions, adjust settings in the wp-config.php file.
  • While revisions can clutter your database, they do not affect front-end site speed directly.
  • For a complete database cleanup, you can also remove post and comment meta data with additional SQL queries.
Jan Reilink
Jan Reilink

In my day to day work, I’m a systems administrator – DevOps / SRE and applications manager at Embrace – The Human Cloud. At Embrace we develop, maintain and host social intranets for our clients. Provide digital services and make working more efficient within various sectors.

Want to support me and donate? Use this link: https://www.paypal.com/paypalme/jreilink.

Articles: 166