Limpiar la base de datos de WordPress
Con el tiempo, la base de datos de WordPress acumula revisiones, borradores, transients caducados y metadatos huérfanos que aumentan su tamaño y ralentizan las consultas. Estas queries eliminan ese peso muerto de forma segura.
Casos de uso: optimizar sitios lentos, reducir el tamaño antes de una migración, mantenimiento periódico de la base de datos, limpiar un sitio de desarrollo antes de pasar a producción.
-- Eliminar revisiones de entradas
DELETE FROM wp_posts WHERE post_type = 'revision';
-- Eliminar borradores automáticos
DELETE FROM wp_posts WHERE post_status = 'auto-draft';
-- Eliminar entradas en la papelera
DELETE FROM wp_posts WHERE post_status = 'trash';
-- Eliminar postmeta huérfano (sin post asociado)
DELETE pm FROM wp_postmeta pm
LEFT JOIN wp_posts p ON p.ID = pm.post_id
WHERE p.ID IS NULL;
-- Eliminar transients caducados
DELETE FROM wp_options
WHERE option_name LIKE '_transient_timeout_%'
AND option_value < UNIX_TIMESTAMP();
DELETE FROM wp_options
WHERE option_name LIKE '_transient_%'
AND option_name NOT LIKE '_transient_timeout_%';
-- Ver el tamaño de cada tabla en MB
SELECT table_name,
ROUND((data_length + index_length) / 1024 / 1024, 2) AS 'MB'
FROM information_schema.tables
WHERE table_schema = DATABASE()
ORDER BY (data_length + index_length) DESC;
- wp_posts WHERE post_type = 'revision' — Las revisiones son copias antiguas de cada guardado. En sitios activos se acumulan miles de registros.
- postmeta huérfano — El
LEFT JOINencuentra registros enwp_postmetacuyopost_idya no existe enwp_posts. - Transients caducados — WordPress no siempre los elimina automáticamente; la primera query borra los registros de timeout y la segunda los valores asociados.
- Importante: hacer siempre un backup con
wp db export backup.sqlantes de ejecutar cualquier DELETE.
