10 consultas SQL para limpiar la base de datos de WordPress

A clean database diagram on a dark background, MySQL table rows being swept away, WordPress admin dashboard visible in bac...

La base de datos de un WordPress que lleva meses o años en producción acumula basura: revisiones de entradas que nadie consultará, comentarios marcados como spam, transients expirados de plugins que ya no tienes instalados y filas huérfanas que no apuntan a ningún contenido real. Todo eso pesa, ralentiza las consultas y hace los backups más grandes de lo necesario.

Antes de ejecutar cualquier consulta SQL, haz una copia de seguridad completa de la base de datos. Sin excepción. phpMyAdmin tiene la opción de exportar toda la base de datos en un archivo .sql. También puedes usar WP-CLI con wp db export. No te saltes este paso.

1. Borrar revisiones antiguas (y sus metadatos)

WordPress guarda una revisión por cada vez que guardas un borrador o publicas. En sitios activos esto genera miles de filas en wp_posts.

-- Borrar revisiones
DELETE FROM wp_posts WHERE post_type = 'revision';

-- Borrar metadatos huérfanos de esas revisiones
DELETE pm FROM wp_postmeta pm
LEFT JOIN wp_posts p ON p.ID = pm.post_id
WHERE p.ID IS NULL;Lenguaje del código: PHP (php)

Equivalente en WP-CLI: wp post delete $(wp post list --post_type='revision' --format=ids) --force

2. Eliminar comentarios spam y en la papelera

-- Spam
DELETE FROM wp_comments WHERE comment_approved = 'spam';

-- Comentarios en la papelera
DELETE FROM wp_comments WHERE comment_approved = 'trash';

-- Limpiar metadatos huérfanos de comentarios
DELETE cm FROM wp_commentmeta cm
LEFT JOIN wp_comments c ON c.comment_ID = cm.comment_id
WHERE c.comment_ID IS NULL;Lenguaje del código: PHP (php)

WP-CLI: wp comment delete $(wp comment list --status=spam --format=ids) --force

3. Borrar borradores y auto-drafts antiguos

-- Auto-drafts (guardado automático)
DELETE FROM wp_posts WHERE post_status = 'auto-draft';

-- Borradores con más de 30 días
DELETE FROM wp_posts
WHERE post_status = 'draft'
AND post_modified < DATE_SUB(NOW(), INTERVAL 30 DAY);Lenguaje del código: JavaScript (javascript)

WP-CLI: wp post delete $(wp post list --post_status=auto-draft --format=ids) --force

4. Limpiar transients expirados

Los transients son valores temporales que plugins y WordPress guardan en la tabla wp_options. Cuando expiran, se borran la próxima vez que se consultan, pero si el plugin que los creó fue desinstalado, pueden quedarse ahí para siempre.

-- Transients expirados (los que tienen _timeout con valor pasado)
DELETE FROM wp_options
WHERE option_name LIKE '%_transient_%'
AND option_name LIKE '%_transient_timeout_%'
AND option_value < UNIX_TIMESTAMP();

-- Transients sin timeout (persistentes)
DELETE FROM wp_options
WHERE option_name LIKE '%_transient_%'
AND option_name NOT LIKE '%_transient_timeout_%'
AND option_name NOT IN (
  SELECT CONCAT('_transient_', REPLACE(option_name, '_transient_timeout_', ''))
  FROM wp_options
  WHERE option_name LIKE '%_transient_timeout_%'
);Lenguaje del código: JavaScript (javascript)

WP-CLI tiene un comando directo: wp transient delete --expired. Y para borrar todos: wp transient delete --all.

5. Eliminar post_meta huérfano

DELETE pm FROM wp_postmeta pm
LEFT JOIN wp_posts p ON p.ID = pm.post_id
WHERE p.ID IS NULL;Lenguaje del código: PHP (php)

6. Limpiar entradas en la papelera

DELETE FROM wp_posts WHERE post_status = 'trash';Lenguaje del código: JavaScript (javascript)

WP-CLI: wp post delete $(wp post list --post_status=trash --format=ids) --force

7. Borrar datos de plugins desinstalados en wp_options

Cuando desinstalar un plugin no hace su limpieza correctamente, deja filas en wp_options con su prefijo. Si conoces el prefijo, puedes borrarlas:

-- Ejemplo: limpiar opciones del plugin WooCommerce si ya no lo usas
DELETE FROM wp_options WHERE option_name LIKE 'woocommerce_%';Lenguaje del código: JavaScript (javascript)

Ten cuidado con esta: primero verifica qué filas borrarás con un SELECT antes de ejecutar el DELETE.

8. Optimizar las tablas después de limpiar

Después de borrar filas, MySQL no libera el espacio en disco automáticamente. La instrucción OPTIMIZE TABLE recupera ese espacio y reorganiza el índice:

OPTIMIZE TABLE wp_posts;
OPTIMIZE TABLE wp_postmeta;
OPTIMIZE TABLE wp_options;
OPTIMIZE TABLE wp_comments;
OPTIMIZE TABLE wp_commentmeta;

WP-CLI: wp db optimize optimiza todas las tablas de un golpe.

Alternativas: plugins para limpiar sin tocar SQL

Si prefieres no ejecutar SQL a mano, hay tres plugins fiables para esto:

  • WP-Optimize: el más completo. Limpia revisiones, transients, spam, borradores y optimiza tablas desde el panel de WordPress.
  • Advanced DB Cleaner: más granular. Permite ver exactamente qué hay en wp_options y borrar fila a fila.
  • WP-Sweep: ligero, gratuito. Muestra cuántas filas limpiará antes de ejecutar la acción.

Automatizar la limpieza con WP-Cron

Puedes programar una limpieza automática de transients con WP-Cron añadiendo esto al functions.php de tu tema o a un plugin personalizado:

add_action( 'wp', function() {
    if ( ! wp_next_scheduled( 'limpiar_transients_db' ) ) {
        wp_schedule_event( time(), 'weekly', 'limpiar_transients_db' );
    }
});

add_action( 'limpiar_transients_db', function() {
    global $wpdb;
    $wpdb->query(
        "DELETE FROM $wpdb->options WHERE option_name LIKE '%_transient_%' AND option_name LIKE '%_transient_timeout_%' AND option_value < UNIX_TIMESTAMP()"
    );
});Lenguaje del código: PHP (php)

Una base de datos limpia contribuye directamente a mejorar los tiempos de respuesta. Si también quieres trabajar el rendimiento desde el front, puedes combinar esto con las medidas del artículo sobre cómo mejorar el rendimiento de WordPress y elegir el mejor plugin de caché para tu caso. También te conviene echar un vistazo a los plugins para administrar WordPress de forma más eficiente.

Preguntas frecuentes

¿Con qué frecuencia hay que limpiar la base de datos de WordPress?

Depende del volumen de contenido y del número de plugins activos. Un sitio con publicación frecuente y muchos plugins se beneficia de una limpieza mensual. Sitios más tranquilos pueden funcionar bien con una limpieza trimestral. Lo importante es hacerlo con backup previo siempre.

¿Son peligrosas las consultas SQL en WordPress?

Solo si las ejecutas sin backup o sin entender qué hacen. Las consultas de esta guía borran datos que WordPress no usa activamente (spam, revisiones, transients expirados), pero siempre existe el riesgo de que algo vaya mal. Un backup previo es tu única red de seguridad real.

¿Qué tabla de WordPress ocupa más espacio generalmente?

wp_posts y wp_postmeta suelen ser las más grandes en sitios con mucho contenido. wp_options crece desproporcionadamente cuando hay muchos plugins instalados o cuando se acumulan transients. Puedes ver el tamaño de cada tabla en phpMyAdmin haciendo clic en el nombre de la base de datos.

¿Puedo usar WP-CLI para hacer toda la limpieza sin phpMyAdmin?

Sí. WP-CLI cubre la mayoría de las operaciones: wp transient delete --expired, wp post delete para revisiones y borradores, wp comment delete para spam, y wp db optimize para la optimización final. Es el método más limpio si tienes acceso SSH.

¿Limpiar la BD mejora el SEO?

De forma indirecta sí. Una BD más ligera reduce los tiempos de respuesta del servidor (TTFB), lo que afecta a las Core Web Vitals y al rastreo eficiente por parte de Googlebot. No es el factor más crítico del SEO técnico, pero forma parte de la higiene general del sitio.

David Carrero Fernández-Baillo

Experimentando con un sitio web sobre WordPress, este popular gestor de contenidos, entre otros muchos proyectos.

Te puede interesar...

    Comments are closed

    WordPress Directo
    WPDirecto.com es una revista especializada en WordPress y WooCommerce que ofrece una amplia gama de recursos, incluyendo tutoriales, análisis de plugins y plantillas, consejos de optimización y estrategias de SEO, para ayudar a los usuarios a mejorar y personalizar sus sitios web, manteniéndolos informados sobre las últimas novedades y tendencias en el mundo de WordPress.

    © 1995-2025 Color Vivo Internet, SLU (Medios y Redes Online).. Otros contenidos se cita fuente. Infraestructura cloud servidores dedicados de Stackscale.