-- Count orphaned postmeta rows where the parent post no longer exists:
SELECT COUNT(pm.meta_id) AS orphaned_count
FROM wp_postmeta pm
LEFT JOIN wp_posts p ON p.ID = pm.post_id
WHERE p.ID IS NULL;
-- Delete orphaned rows cleanly in batches:
DELETE pm FROM wp_postmeta pm
LEFT JOIN wp_posts p ON p.ID = pm.post_id
WHERE p.ID IS NULL;