🎨 Sysprovider Code
Sysprovider LogoWiki
🇪🇸Hosting español para ecommerce

Cómo optimizar la base de datos de PrestaShop para acelerar la tienda

Actualizado el 15 de septiembre de 2025

¿Por qué tu tienda PrestaShop va lenta? El problema suele estar en la base de datos

Si tu tienda online con PrestaShop carga lento, no siempre es culpa de las imágenes o del hosting. En la mayoría de los casos, el verdadero culpable es una base de datos MySQL hinchada y desordenada. Cada pedido, cada producto y cada sesión de usuario genera registros que se acumulan sin control.

Con el tiempo, esa acumulación hace que cada consulta tarde más en ejecutarse. Y como cada página de tu tienda hace decenas de consultas, el resultado es una experiencia de usuario pésima y una caída en tu posicionamiento SEO.

La buena noticia es que optimizar base de datos PrestaShop es algo que puedes hacer tú mismo, sin ser un experto. En esta guía te voy a enseñar paso a paso cómo acelerar tu tienda limpiando y mejorando tu base de datos.


¿Qué es exactamente la base de datos en PrestaShop?

Piensa en tu base de datos como el cerebro de tu tienda. Ahí se guardan los productos, precios, clientes, pedidos, contraseñas, configuraciones y hasta los mensajes del carrito abandonado.

PrestaShop usa MySQL como sistema de gestión. Cada vez que un visitante entra a tu tienda, el servidor lanza una serie de consultas SQL para mostrar la información. Si esas consultas son lentas porque hay demasiada basura, tu tienda se vuelve un carrito lleno de piedras.


Señales de que tu base de datos necesita optimización

Antes de empezar, identifica si tu tienda tiene estos síntomas:

  • Tiempo de carga superior a 3 segundos en páginas básicas.
  • El panel de administración tarda en abrir productos o pedidos.
  • Errores de conexión a la base de datos en horas punta.
  • La caché se llena constantemente y no mejora el rendimiento.
  • El hosting te avisa de que el uso de CPU o memoria es elevado.

Si tienes al menos dos de estos síntomas, sigue leyendo.


Herramientas que necesitas antes de optimizar

Para trabajar cómodamente con tu base de datos, te recomiendo tener a mano:

  • Acceso a cPanel o al panel de tu hosting (como Syspanel, que accedes por el puerto 2106). Desde ahí puedes entrar a phpMyAdmin.
  • Una copia de seguridad reciente de tu base de datos. Esto es vital. Nunca trabajes sin respaldo.
  • Un editor de texto para anotar cambios y fechas.
  • Paciencia, sobre todo si tu tienda tiene muchos años y miles de registros.

[WARNING] No hagas ninguna optimización sin una copia de seguridad. Si algo sale mal, podrías perder datos críticos de clientes y pedidos.


Paso 1: Limpia los registros obsoletos (logs)

Los logs son registros de actividad que PrestaShop guarda automáticamente. Con el tiempo, pueden acumularse cientos de miles de entradas inútiles.

¿Qué debes limpiar?

  • Tabla ps_log: almacena errores y eventos del sistema.
  • Tabla ps_connections: registra cada visita y conexión a la tienda.
  • Tabla ps_connections_page: detalla qué páginas visitó cada conexión.
  • Tabla ps_guest: guarda datos de visitantes anónimos.

Cómo limpiarlas desde phpMyAdmin

  1. Accede a tu panel de hosting (por ejemplo, Syspanel en el puerto 2106) y abre phpMyAdmin.
  2. Selecciona tu base de datos de PrestaShop.
  3. Ve a la pestaña SQL y ejecuta estas consultas:
TRUNCATE TABLE ps_log;
TRUNCATE TABLE ps_connections;
TRUNCATE TABLE ps_connections_page;
TRUNCATE TABLE ps_guest;

[INFO] Usar TRUNCATE vacía la tabla por completo y reinicia el autoincremento. Es más rápido que DELETE.

Si quieres conservar algunos datos, puedes usar DELETE con condiciones. Por ejemplo, borrar solo registros de hace más de 30 días:

DELETE FROM ps_connections WHERE date_add < DATE_SUB(NOW(), INTERVAL 30 DAY);

Paso 2: Elimina carritos abandonados y sesiones caducadas

Cada vez que un usuario añade un producto al carrito y se va sin comprar, PrestaShop guarda esa información. Si tu tienda tiene mucho tráfico, esto puede suponer miles de filas inútiles.

Tablas a depurar

  • ps_cart: carritos de compra.
  • ps_cart_product: productos dentro de cada carrito.
  • ps_sessions: sesiones de usuario activas y caducadas.

Consulta para limpiar carritos antiguos

DELETE FROM ps_cart WHERE date_add < DATE_SUB(NOW(), INTERVAL 15 DAY);
DELETE FROM ps_cart_product WHERE id_cart NOT IN (SELECT id_cart FROM ps_cart);

Y para sesiones caducadas:

DELETE FROM ps_sessions WHERE last_activity < DATE_SUB(NOW(), INTERVAL 1 DAY);

[TIP] Ejecuta estas limpiezas una vez al mes para mantener tu base de datos ligera.


Paso 3: Revisa y optimiza las tablas con phpMyAdmin

Esta es la parte más sencilla y con mejores resultados inmediatos. Consiste en reorganizar físicamente los datos de las tablas para que las consultas sean más rápidas.

Cómo hacerlo

  1. En phpMyAdmin, selecciona tu base de datos.
  2. Marca todas las tablas (hay un checkbox arriba).
  3. En el desplegable inferior, elige Optimizar tabla.

Este proceso compacta los espacios vacíos y actualiza las estadísticas de índice. Es como desfragmentar el disco duro de tu ordenador.

[INFO] Puedes hacerlo también por línea de comandos si tu hosting te da acceso SSH:

OPTIMIZE TABLE ps_product, ps_product_lang, ps_stock_available;

Paso 4: Indexa correctamente las tablas más usadas

Los índices son como el índice de un libro. Sin ellos, MySQL tiene que leer toda la tabla para encontrar un dato. Con ellos, la búsqueda es casi instantánea.

Índices recomendados para PrestaShop

Estas son las tablas que más se consultan y los campos que deberían estar indexados:

  • ps_product: id_category_default, active, date_add.
  • ps_product_lang: id_product, id_lang, id_shop.
  • ps_stock_available: id_product, id_product_attribute.
  • ps_orders: date_add, current_state, id_customer.
  • ps_customer: email, active.

Cómo añadir un índice

Ve a la tabla que quieras modificar, clic en Estructura y luego en Índices. Añade un índice simple al campo indicado.

Si prefieres SQL, un ejemplo sería:

ALTER TABLE ps_product ADD INDEX idx_active (active);

[WARNING] No crees índices duplicados ni índices en campos que no se usan en consultas. Eso ralentizaría las inserciones y actualizaciones.


Paso 5: Activa el caché de MySQL y de PrestaShop

La caché evita que MySQL repita las mismas consultas una y otra vez. Es una de las formas más efectivas de acelerar tienda PrestaShop sin tocar código.

Caché de MySQL

Desde el archivo my.cnf (o my.ini en Windows), puedes configurar:

query_cache_size = 64M
query_cache_type = 1

También es recomendable aumentar el buffer de InnoDB:

innodb_buffer_pool_size = 1G

[INFO] Estos valores dependen de la memoria RAM de tu servidor. Si tienes 4 GB de RAM, destina 1 GB al buffer de InnoDB. Si tienes menos, usa 512 MB.

Caché de PrestaShop

En el panel de administración de PrestaShop:

  1. Ve a Parámetros avanzadosRendimiento.
  2. Activa la Caché y selecciona Sistema de archivos o Memcached si tu hosting lo permite.
  3. Activa también la Compresión CCC para CSS y JavaScript.
  4. Guarda los cambios y limpia la caché.

Paso 6: Activa el modo mantenimiento y desactiva el modo debug

Si tu tienda está en producción, el modo debug consume muchos recursos y ralentiza las consultas.

Cómo desactivarlo

En el archivo config/defines.inc.php, busca y cambia:

define('_PS_MODE_DEV_', false);

Y en el panel de administración, ve a Parámetros avanzadosRendimiento, y desactiva la opción de Depuración.

[TIP] Mantén siempre el modo debug desactivado en producción. Solo actívalo cuando estés resolviendo un error puntual.


Paso 7: Programa limpiezas automáticas con cron

No basta con limpiar una vez. Debes establecer una rutina para que la base de datos no vuelva a llenarse de basura.

Crear un script PHP para limpieza

Crea un archivo limpiar_db.php en la raíz de tu PrestaShop con este contenido:

<?php
require_once('config/config.inc.php');
require_once('init.php');

// Limpiar logs
Db::getInstance()->execute('TRUNCATE TABLE '._DB_PREFIX_.'log');
Db::getInstance()->execute('TRUNCATE TABLE '._DB_PREFIX_.'connections');
Db::getInstance()->execute('TRUNCATE TABLE '._DB_PREFIX_.'connections_page');

// Limpiar carritos antiguos
Db::getInstance()->execute('DELETE FROM '._DB_PREFIX_.'cart WHERE date_add < DATE_SUB(NOW(), INTERVAL 15 DAY)');

echo 'Limpieza completada';
?>

Configurar el cron

En tu panel de hosting (como Syspanel en el puerto 2106), crea una tarea cron que ejecute este script una vez al mes:

0 4 1 * * php /ruta/a/tu/tienda/limpiar_db.php

Paso 8: Considera migrar a MySQL 8 o MariaDB 10.6+

Las versiones antiguas de MySQL son más lentas y no aprovechan el hardware moderno. Si tu hosting te lo permite, migra a MariaDB 10.6+ o MySQL 8.0+.

Ventajas de las versiones nuevas

  • Índices más eficientes y menor uso de disco.
  • Optimizador de consultas mucho más inteligente.
  • Mejor gestión de caché y de memoria.

[INFO] Antes de migrar, consulta con tu proveedor de hosting si tu plan lo soporta. En Syspanel (puerto 2106) puedes ver la versión de MySQL en la sección de bases de datos.


Preguntas frecuentes (FAQ)

¿Con qué frecuencia debo optimizar la base de datos de PrestaShop?

Lo ideal es hacer una limpieza ligera cada semana y una optimización completa cada mes. Si tu tienda tiene mucho tráfico, puedes hacerla cada 15 días.

¿Es peligroso truncar tablas como ps_log?

No. Esas tablas solo contienen información temporal y no afectan a productos, pedidos ni clientes. Eso sí, asegúrate de usar el prefijo correcto si tu tienda usa uno distinto a ps_.

¿Puedo optimizar la base de datos sin acceso a phpMyAdmin?

Sí, puedes usar un módulo de PrestaShop como Advanced Database Cleaner o DB Cleaner. Pero el control manual es más completo y no depende de módulos de terceros.

¿La optimización de la base de datos afecta al SEO?

Sí, y de forma positiva. Google penaliza las páginas lentas. Si tu tienda carga más rápido, la tasa de rebote baja y el tiempo de permanencia sube. Eso mejora tu posicionamiento orgánico.

¿Qué hago si después de optimizar la base de datos la tienda sigue lenta?

Entonces el problema puede estar en el hosting, en imágenes sin comprimir o en módulos mal configurados. Te recomiendo revisar también el rendimiento del servidor y el tema que usas.


Resumen final: tu plan de acción para optimizar base de datos PrestaShop

Para dejarlo bien claro, este es el orden de acciones que debes seguir hoy mismo:

  1. Haz una copia de seguridad completa de tu base de datos.
  2. Limpia logs y sesiones caducadas.
  3. Elimina carritos abandonados de más de 15 días.
  4. Optimiza todas las tablas desde phpMyAdmin.
  5. Revisa los índices de las tablas más críticas.
  6. Activa la caché de MySQL y de PrestaShop.
  7. Desactiva el modo debug.
  8. Programa un cron de limpieza mensual.

Con esto, tu tienda PrestaShop cargará mucho más rápido, tus clientes estarán más contentos y tu SEO lo notará en pocas semanas.

[TIP] Si tu hosting usa Syspanel (acceso por el puerto 2106), verás que la gestión de bases de datos es muy intuitiva. Todo lo que necesitas está a un clic.


No subestimes el poder de una base de datos limpia. Es la base de un rendimiento PrestaShop excelente. Empieza hoy mismo y notarás la diferencia. Tu tienda te lo agradecerá.

¿Necesitas ayuda?Son dos de nuestros técnicos, Agustín y Mikel, y están disponibles para resolver cualquier problema.

Hablar con ellos ahora
Agustín y Mikel