Skip to content

Instantly share code, notes, and snippets.

@mkormendy
Forked from codearachnid/wp-db-cleanup.sql
Created February 17, 2026 05:26
Show Gist options
  • Select an option

  • Save mkormendy/e708d3c22173f67a029782417ec9ad60 to your computer and use it in GitHub Desktop.

Select an option

Save mkormendy/e708d3c22173f67a029782417ec9ad60 to your computer and use it in GitHub Desktop.
Safely delete orphan postmeta, attachment, gravity form entries in WordPress database *** ALWAYS BACKUP YOUR DATA FIRST ***
-- List all orphan rows from wp_postmeta
SELECT * FROM wp_postmeta
LEFT JOIN wp_posts ON wp_posts.ID = wp_postmeta.post_id
WHERE wp_posts.ID IS NULL;
-- Delete orphan postmeta
DELETE pm
FROM wp_postmeta pm
LEFT JOIN wp_posts p ON pm.post_id = p.ID
WHERE p.ID IS NULL;
-- List all orphan attachments from wp_postmeta
SELECT * FROM wp_posts p1
LEFT JOIN wp_posts p2 ON p1.post_parent = p2.ID
WHERE p1.post_parent > 0 AND p1.post_type = 'attachment' AND p2.ID IS NULL;
-- Delete orphan attachment
DELETE p1
FROM wp_posts p1
LEFT JOIN wp_posts p2 ON p1.post_parent = p2.ID
WHERE p1.post_parent > 0 AND p1.post_type = 'attachment' AND p2.ID IS NULL;
-- List all orphan gravity forms entries
SELECT * FROM wp_rg_lead_detail_long
LEFT JOIN wp_rg_lead_detail ON (wp_rg_lead_detail_long.lead_detail_id = wp_rg_lead_detail.lead_id)
WHERE (wp_rg_lead_detail.lead_id IS NULL)
-- Delete orphan gravity forms entries
DELETE wp_rg_lead_detail_long FROM wp_rg_lead_detail_long
LEFT JOIN wp_rg_lead_detail ON (wp_rg_lead_detail_long.lead_detail_id = wp_rg_lead_detail.lead_id)
WHERE (wp_rg_lead_detail.lead_id IS NULL)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment