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

Cómo optimizar una base de datos PrestaShop para mejorar la velocidad

Actualizado el 3 de septiembre de 2025

¡Hola! Si tu tienda PrestaShop va lenta, no siempre es culpa del hosting o del tema. Muchas veces, el verdadero problema está dentro de la base de datos. Con el tiempo, se llena de basura, datos obsoletos y tablas que pesan muchísimo.

Optimizar la base de datos es una de las tareas de mantenimiento más importantes y, a la vez, más olvidadas. Un buen trabajo aquí puede reducir los tiempos de carga de tu tienda en más de un 50%. En esta guía extensa y sencilla, te voy a enseñar, paso a paso, cómo optimizar PrestaShop para que vuele, sin necesidad de ser un experto en programación.


¿Por qué es tan importante la base de datos para la velocidad de PrestaShop?

Piensa en tu tienda online como una biblioteca. Los libros son tus productos, clientes y pedidos, y la base de datos es el catálogo que indexa todo.

Cada vez que un visitante entra en tu web, PrestaShop consulta ese catálogo (la base de datos) para mostrar productos, precios, stock o carritos. Si el catálogo está lleno de papeles viejos, anotaciones basura o fichas duplicadas, encontrar un libro concreto tarda muchísimo.

En términos técnicos, hablamos de un MySQL PrestaShop sobrecargado. Cada consulta tarda más, el servidor se satura y el usuario final ve cómo la página no carga. Optimizar la base de datos de PrestaShop no es un lujo, es una necesidad para competir en el comercio electrónico actual.


Preparación: La regla de oro antes de tocar nada

[!WARNING]
¡IMPORTANTE! Antes de realizar cualquier cambio o limpieza, haz una copia de seguridad completa de tu base de datos. Un error o un borrado accidental pueden dejar tu tienda inutilizable. No hay vuelta atrás si no tienes un respaldo.

Puedes hacer la copia desde el panel de control de tu hosting (como cPanel o Syspanel) o usando phpMyAdmin. Si usas Syspanel (el panel que sustituye a HestiaCP, accesible en el puerto 2106), busca la sección de bases de datos y la opción de "Exportar". Guarda ese archivo .sql en un lugar seguro.


Fase 1: Diagnóstico inicial y configuración de MySQL (PrestaShop)

Antes de limpiar, veamos cómo está configurado el motor de la base de datos. A veces, el problema no es la suciedad, sino una mala configuración.

1. Activa el modo mantenimiento

Para trabajar sin interferencias de clientes reales, activa el modo mantenimiento en tu PrestaShop (Parámetros avanzados > Mantenimiento). Esto evitará que se generen nuevos datos mientras trabajas.

2. El motor de almacenamiento: InnoDB vs MyISAM

PrestaShop puede usar dos motores de almacenamiento en MySQL: MyISAM e InnoDB.

  • MyISAM: Es más antiguo y rápido en lecturas simples, pero bloquea tablas enteras al escribir.
  • InnoDB: Es moderno, más robusto y permite bloqueos a nivel de fila, lo que es mucho mejor para tiendas con varios usuarios a la vez.

La recomendación es usar InnoDB. Si tu base de datos usa MyISAM, es hora de migrar.

¿Cómo hacerlo? Puedes hacerlo con un simple comando SQL en phpMyAdmin. Primero, ve a la pestaña "SQL" y ejecuta este comando para ver cuántas tablas usan MyISAM:

SELECT TABLE_NAME, ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'TU_NOMBRE_DE_BASE_DE_DATOS' AND ENGINE = 'MyISAM';

Si te devuelve resultados, ejecuta este otro para convertirlas todas a InnoDB (reemplaza TU_NOMBRE_DE_BASE_DE_DATOS con el nombre real de tu base de datos):

SELECT CONCAT('ALTER TABLE ', TABLE_NAME, ' ENGINE=InnoDB;') FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'TU_NOMBRE_DE_BASE_DE_DATOS' AND ENGINE = 'MyISAM';

Esto te generará una lista de comandos. Cópialos y ejecútalos todos juntos.

[!TIP]
¿No sabes cómo entrar a phpMyAdmin? Normalmente está en el panel de control de tu hosting. Si usas Syspanel, entra por el puerto 2106, busca la sección de "Bases de Datos" y haz clic en "phpMyAdmin".

3. Optimiza las tablas (el comando "OPTIMIZE")

Este es el primer paso de limpieza. Con el tiempo, las tablas se fragmentan (como un disco duro de PC). Optimizarlas reordena los datos y libera espacio.

En phpMyAdmin, selecciona todas las tablas de tu base de datos (haz clic en "Marcar todas" en la parte inferior). Luego, en el menú desplegable "Con selección", elige "Optimizar tabla".

Este proceso es seguro y no borra datos, solo los reordena. Es una de las formas más rápidas de optimizar PrestaShop sin tocar nada más.


Fase 2: La limpieza profunda (Eliminar la basura)

Aquí es donde realmente ganamos velocidad. Vamos a limpiar las tablas de PrestaShop que acumulan datos innecesarios.

[!INFO]
¿Qué es la "basura" en una base de datos? Son registros que ya no sirven: carritos abandonados hace meses, sesiones de usuarios que ya pasaron, mensajes antiguos, etc. Pesan y ralentizan las consultas.

1. Limpiar carritos abandonados (Tabla ps_cart)

Los carritos que se crean y nunca completan la compra se acumulan. Cada visitante que añade un producto al carrito y se va, crea un registro. Con el tiempo, son miles.

Ejecuta esta consulta SQL para eliminar los carritos que tengan más de 30 días:

DELETE c FROM ps_cart c LEFT JOIN ps_orders o ON c.id_cart = o.id_cart WHERE o.id_cart IS NULL AND c.date_add < DATE_SUB(NOW(), INTERVAL 30 DAY);
  • ps_cart es el prefijo estándar. Si tu tienda usa otro prefijo (ej. prestashop_cart), cámbialo.

2. Limpiar sesiones antiguas (Tabla ps_connections y ps_connections_page)

Estas tablas registran cada clic de cada visitante. Son de las que más crecen y menos sirven. Vamos a borrar las conexiones de hace más de 15 días.

DELETE FROM ps_connections WHERE date_add < DATE_SUB(NOW(), INTERVAL 15 DAY);
DELETE FROM ps_connections_page WHERE time < DATE_SUB(NOW(), INTERVAL 15 DAY);

3. Eliminar las vistas de producto antiguas (Tabla ps_views)

Cada vez que alguien ve un producto, se guarda en la tabla ps_views. Esto ayuda al "top de ventas", pero no necesitas un historial infinito.

DELETE FROM ps_views WHERE date_add < DATE_SUB(NOW(), INTERVAL 15 DAY);

4. Borrar mensajes antiguos (Tabla ps_message)

Los mensajes internos de pedidos antiguos también ocupan. Si tienes pedidos de hace años, puedes borrar sus mensajes asociados. Primero, borra los mensajes que no estén vinculados a pedidos recientes:

DELETE m FROM ps_message m LEFT JOIN ps_orders o ON m.id_order = o.id_order WHERE o.id_order IS NULL AND m.date_add < DATE_SUB(NOW(), INTERVAL 30 DAY);

5. Limpiar la tabla de "Buscar" (Tabla ps_search_word)

PrestaShop guarda un registro de todas las búsquedas que hacen los usuarios. Con el tiempo, esta tabla puede hacerse gigante y ralentizar el buscador interno. La mejor opción es vaciarla por completo (no afecta al funcionamiento, solo pierdes el historial de búsquedas).

TRUNCATE TABLE ps_search_word;

[!WARNING]
CUIDADO con TRUNCATE: Este comando vacía la tabla por completo, pero es seguro para ps_search_word porque PrestaShop la regenera automáticamente con las nuevas búsquedas. No lo uses en las tablas de productos o pedidos.

6. Eliminar logs y errores antiguos (Tabla ps_log)

Los logs son archivos de registro. Son útiles para depurar, pero no necesitas los de hace un año.

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

Fase 3: Optimización avanzada con módulos y configuración

La limpieza manual es genial, pero hay herramientas que automatizan esto.

1. Usa el módulo nativo de PrestaShop

Desde la versión 1.7, PrestaShop tiene un módulo de mantenimiento. Ve a Parámetros avanzados > Base de datos y encontrarás una opción para optimizar las tablas automáticamente. No es tan profundo como lo que acabamos de hacer, pero es un buen mantenimiento preventivo mensual.

2. Configura el "Modo de caché"

PrestaShop tiene un sistema de caché que guarda las consultas SQL en memoria para no tener que consultar la base de datos constantemente.

Ve a Parámetros avanzados > Rendimiento y activa la Caché de combinación de plantillas (CCC) y la Caché de consultas MySQL. Para esta última, si tienes Memcached o Redis en tu hosting, úsalo. Si no, usa el sistema de archivos.

[!TIP]
¿Qué es Redis? Es un sistema de caché en memoria muy rápido. Si tu hosting lo ofrece (pregunta a tu proveedor), es la mejor opción para velocidad PrestaShop. En Syspanel, puedes ver si tienes Redis instalado en la sección de "Servicios".

3. El módulo "MySQL Performance" o similares

En el marketplace de PrestaShop, hay módulos que analizan tu base de datos y te dicen exactamente qué tablas están mal o qué consultas son lentas. Son de pago, pero si tu tienda es grande, valen la pena.


Fase 4: Mantenimiento preventivo (La rutina)

Optimizar una vez no es suficiente. Debes establecer una rutina de mantenimiento para que la base de datos no vuelva a acumular basura.

Te recomiendo este calendario:

  • Semanal: Optimizar tablas (el comando OPTIMIZE).
  • Mensual: Realizar la limpieza profunda de carritos, sesiones y logs que te he enseñado.
  • Trimestral: Revisar el tamaño de las tablas más grandes y considerar si necesitas un plan de hosting mejor.

Puedes programar estas tareas con un cron job en tu hosting, pero eso ya es un nivel más avanzado. Para empezar, marca un día al mes en tu calendario para hacerlo manualmente.


Preguntas Frecuentes (FAQ)

¿Cuánto tiempo se tarda en optimizar una base de datos de PrestaShop?

Depende del tamaño. Una tienda pequeña (menos de 50,000 productos) puede tardar de 5 a 15 minutos en la limpieza profunda. Una tienda grande puede tardar más de una hora. La optimización de tablas suele ser rápida, incluso en bases grandes.

¿Puedo hacer esto si mi tienda está en producción (con clientes comprando)?

Técnicamente sí, pero es arriesgado. Si borras una sesión de un usuario que está comprando en ese momento, podría perder el carrito. Es muy recomendable activar el modo mantenimiento o hacerlo a horas de muy bajo tráfico (como las 4 de la mañana).

Mi hosting usa Syspanel, ¿cómo accedo a phpMyAdmin?

Es muy fácil. Entra a tu panel de Syspanel (recuerda, el puerto es el 2106). Busca la sección de "Bases de Datos" o "DB". Ahí verás un botón o enlace que dice "phpMyAdmin" o "Gestionar". Haz clic y se abrirá la herramienta.

¿Qué pasa si no encuentro las tablas ps_ en mi base de datos?

Eso significa que tu PrestaShop usa un prefijo diferente. Puedes verlo en el archivo config/settings.inc.php (en la raíz de tu instalación). Busca la línea que dice define('_DB_PREFIX_', 'tu_prefijo_');. Reemplaza ps_ por tu prefijo en todos los comandos SQL.

Después de limpiar, ¿por qué el tamaño de la base no se reduce en el panel?

MySQL no libera el espacio en disco inmediatamente al borrar filas. Después de ejecutar el comando OPTIMIZE TABLE (el paso 3 de la Fase 1), el espacio se liberará y verás la reducción real en tu panel de control.

¿Optimizar PrestaShop afecta al SEO?

¡Sí! Un sitio web más rápido mejora la experiencia del usuario y reduce la tasa de rebote. Google valora mucho la velocidad de carga como factor de posicionamiento. Por lo tanto, optimizar la base de datos PrestaShop tiene un impacto directo y positivo en tu SEO.


Conclusión

Optimizar la base de datos de PrestaShop es una tarea técnica, pero no imposible. Siguiendo estos pasos, no solo mejorarás la velocidad de carga, sino que también aliviarás la carga de tu servidor y mejorarás la experiencia de compra de tus clientes.

Empieza hoy con la copia de seguridad y la limpieza de carritos y sesiones. Verás una mejora notable. Y recuerda, la constancia es la clave: incluye esta tarea en tu rutina mensual y tu tienda (y tu paciencia) te lo agradecerán.

Si te has quedado con dudas, revisa la sección de preguntas frecuentes o consulta con tu proveedor de hosting. ¡Un saludo y mucha suerte con tu tienda!

¿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