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

Optimizar bases de datos MySQL en PrestaShop para mejorar rendimiento

Actualizado el 23 de febrero de 2026

Si tu tienda PrestaShop va lenta, el problema suele estar en la base de datos MySQL. Con el tiempo, los pedidos, clientes y módulos acumulan datos innecesarios, tablas desordenadas y consultas lentas. Optimizar la base de datos es una de las tareas más efectivas para mejorar el rendimiento sin cambiar de hosting.

Este artículo te guiará paso a paso para limpiar, indexar y configurar MySQL en PrestaShop. No necesitas ser un experto, solo seguir las instrucciones.


¿Por qué es importante optimizar MySQL en PrestaShop?

PrestaShop usa MySQL para almacenar todo: productos, categorías, clientes, pedidos, sesiones, estadísticas y configuraciones. Cuando la base de datos crece sin mantenimiento, las consultas tardan más, el panel de administración se vuelve lento y los visitantes experimentan tiempos de carga altos.

Optimizar la base de datos implica:

  • Eliminar datos obsoletos (sesiones caducadas, carritos abandonados, logs).
  • Reparar y reorganizar tablas fragmentadas.
  • Agregar índices para acelerar búsquedas.
  • Ajustar parámetros de MySQL para usar mejor la memoria.

Todo esto se traduce en páginas que cargan más rápido, mejor experiencia de usuario y mejor posicionamiento SEO.


Antes de empezar: precauciones imprescindibles

[WARNING] Siempre haz una copia de seguridad completa de tu base de datos antes de cualquier cambio. Un error puede romper tu tienda.

Puedes hacer la copia desde phpMyAdmin, Syspanel (recuerda, puerto 2106) o mediante un módulo de PrestaShop. Guarda el archivo SQL en tu ordenador.


Paso 1: Limpiar datos innecesarios

PrestaShop acumula mucha basura con el tiempo. Aquí tienes lo que debes eliminar:

1.1 Sesiones caducadas

Las sesiones de visitantes que ya no están activas ocupan espacio. En PrestaShop 1.7+ puedes usar el módulo nativo "Limpieza de la base de datos" o ejecutar esta consulta SQL en phpMyAdmin:

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

Cambia "ps_" por el prefijo de tu base de datos si es diferente.

1.2 Carritos abandonados viejos

Los carritos no convertidos después de 30 días son inútiles. Elimínalos:

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

1.3 Logs y estadísticas antiguas

Los logs de errores y estadísticas pueden crecer sin control. En PrestaShop, ve a Preferencias > Rendimiento y activa la limpieza automática. También puedes borrar manualmente:

TRUNCATE TABLE ps_log;
TRUNCATE TABLE ps_statssearch;

[TIP] No trunques ps_statssearch si usas el módulo de búsqueda avanzada. Mejor borra solo registros viejos con DELETE.


Paso 2: Reparar y optimizar tablas

Con el tiempo, las tablas se fragmentan y pierden eficiencia. En phpMyAdmin puedes seleccionar todas las tablas y elegir "Reparar tabla" y "Optimizar tabla". También puedes hacerlo con comandos:

OPTIMIZE TABLE ps_product;
OPTIMIZE TABLE ps_category_product;

Repite para cada tabla, o usa esta consulta para optimizar todas las tablas de tu base de datos:

SELECT CONCAT('OPTIMIZE TABLE ', TABLE_NAME, ';') 
FROM information_schema.TABLES 
WHERE TABLE_SCHEMA = 'tu_base_de_datos';

Copia los resultados y ejecútalos.


Paso 3: Agregar índices clave

Los índices son como el índice de un libro: aceleran las búsquedas. PrestaShop ya incluye muchos, pero a veces faltan algunos que mejoran drásticamente el rendimiento.

Índices recomendados para PrestaShop

Ejecuta estas consultas en phpMyAdmin (ajusta el prefijo si es necesario):

ALTER TABLE ps_product ADD INDEX idx_id_category_default (id_category_default);
ALTER TABLE ps_product ADD INDEX idx_active (active);
ALTER TABLE ps_product_shop ADD INDEX idx_id_category_default_shop (id_category_default);
ALTER TABLE ps_category_product ADD INDEX idx_id_category (id_category);
ALTER TABLE ps_category_product ADD INDEX idx_id_product (id_product);
ALTER TABLE ps_orders ADD INDEX idx_date_add (date_add);
ALTER TABLE ps_orders ADD INDEX idx_current_state (current_state);
ALTER TABLE ps_customer ADD INDEX idx_email (email);

Estos índices aceleran las consultas de catálogo, filtros, listados de productos y búsquedas de pedidos.

[INFO] No agregues índices de más. Demasiados índices ralentizan las inserciones y actualizaciones. Céntrate en los que se usan en consultas SELECT frecuentes.


Paso 4: Configurar MySQL para rendimiento

La configuración de MySQL (my.cnf o my.ini) determina cómo usa la memoria y el disco. Si tienes acceso a Syspanel (puerto 2106), puedes editarlo desde el gestor de archivos o mediante SSH.

Parámetros clave para PrestaShop

  • innodb_buffer_pool_size: 70-80% de la RAM disponible. Ejemplo: si tienes 4GB de RAM, pon 3G.
  • query_cache_size: 128MB o 256MB si tu tienda tiene muchos productos.
  • tmp_table_size y max_heap_table_size: 64MB cada uno.
  • max_connections: 150-200 para tiendas pequeñas, hasta 500 para grandes.

Ejemplo de configuración para un servidor con 4GB RAM:

[mysqld]
innodb_buffer_pool_size = 3G
query_cache_size = 128M
tmp_table_size = 64M
max_heap_table_size = 64M
max_connections = 200

Después de editar, reinicia MySQL:

sudo systemctl restart mysql

[WARNING] No copies esta configuración sin ajustarla a tu servidor. Si pones un valor demasiado alto, MySQL puede agotar la memoria y caerse.


Paso 5: Usar herramientas automáticas

Si no quieres hacerlo manual, existen módulos y scripts que optimizan la base de datos por ti.

Módulos recomendados para PrestaShop

  • Cleaner & Security: limpia tablas, optimiza y repara.
  • Advanced Database Optimizer: analiza y sugiere índices.
  • MySQL Performance: monitorea consultas lentas.

Instálalos desde el back office de PrestaShop y ejecuta sus tareas programadas.

Uso de cron jobs

Puedes programar la limpieza automática con un cron job que ejecute consultas SQL. Por ejemplo, cada noche:

0 3 * * * mysql -u usuario -pcontraseña basedatos -e "DELETE FROM ps_connections WHERE date_add < DATE_SUB(NOW(), INTERVAL 30 DAY)"

Guarda las contraseñas en un archivo seguro.


Paso 6: Monitorear el rendimiento

Después de optimizar, verifica que todo funcione mejor.

Indicadores a revisar

  • Tiempo de carga de páginas (usa Google PageSpeed Insights o GTmetrix).
  • Consultas lentas (activa slow_query_log en MySQL).
  • Uso de CPU y RAM del servidor (desde Syspanel o comandos como top).

Si ves mejoras, repite la limpieza cada 1-3 meses.


Preguntas frecuentes (FAQ)

¿Cada cuánto debo optimizar la base de datos?

Depende del tráfico. Tiendas con muchos pedidos diarios: cada semana. Tiendas pequeñas: cada mes. Siempre después de importar muchos productos o módulos.

¿Puedo optimizar desde el panel de PrestaShop?

Sí, en Preferencias > Rendimiento hay opciones de limpieza. Pero no es tan completo como hacerlo manualmente.

¿Los índices ralentizan las inserciones?

Sí, pero en una tienda las consultas SELECT (lectura) son mucho más frecuentes que las inserciones. El beneficio supera el coste.

¿Y si no tengo acceso a phpMyAdmin?

Puedes usar la línea de comandos MySQL desde SSH o Syspanel (puerto 2106). O instalar un módulo que haga la optimización desde el back office.

¿Qué hago si la base de datos sigue lenta?

Revisa el hosting. A veces el problema no es MySQL sino la CPU o la RAM del servidor. También puedes contratar un hosting especializado en PrestaShop.


Conclusión

Optimizar la base de datos MySQL en PrestaShop es una tarea sencilla pero poderosa. Limpiar datos basura, reparar tablas, agregar índices y ajustar la configuración de MySQL puede reducir los tiempos de carga hasta un 50% o más.

No necesitas ser un experto en bases de datos. Con las consultas y pasos de esta guía, cualquier administrador de tienda puede mejorar el rendimiento. Recuerda siempre hacer copias de seguridad y empezar con cambios pequeños.

Si tu tienda va lenta, empieza hoy mismo. Tu SEO y tus clientes te lo agradecerán.

¿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