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

Optimizar consultas MySQL en PrestaShop para mejor rendimiento

Actualizado el 15 de mayo de 2026

¿Tu tienda PrestaShop va más lenta de lo que te gustaría? Es muy probable que el cuello de botella esté en la base de datos. Cuando tu tienda crece en productos, clientes y pedidos, las consultas MySQL pueden volverse más pesadas y lentas. Pero no te preocupes: optimizar las consultas MySQL en PrestaShop es más sencillo de lo que parece y puede marcar una gran diferencia en el rendimiento de tu tienda.

En este artículo, vamos a explorar paso a paso cómo identificar, analizar y solucionar los problemas más comunes de consultas mysql lentas en prestashop base de datos. Aprenderás técnicas prácticas para mejorar velocidad prestashop sin necesidad de ser un experto en bases de datos.


¿Por qué es importante optimizar MySQL en PrestaShop?

PrestaShop utiliza MySQL para almacenar y recuperar toda la información de tu tienda: productos, categorías, clientes, pedidos, módulos, etc. Cada vez que un visitante carga una página, se ejecutan múltiples consultas a la base de datos. Si estas consultas son ineficientes, el tiempo de carga se dispara.

El rendimiento prestashop depende en gran medida de la velocidad de las consultas MySQL. Una base de datos optimizada puede reducir el tiempo de carga de página hasta en un 50% o más. Además, mejora la experiencia de usuario y el posicionamiento SEO, ya que Google penaliza las páginas lentas.


Identificar consultas MySQL lentas en PrestaShop

Antes de optimizar, necesitas saber qué consultas están ralentizando tu tienda. PrestaShop incluye herramientas integradas para ello.

1. Activar el modo de depuración de PrestaShop

El modo de depuración te permite ver las consultas SQL que se ejecutan en cada página. Para activarlo:

  • Ve a Parámetros Avanzados > Rendimiento en el back office.
  • En la sección Depuración, selecciona Sí en "Depurar el rendimiento".
  • Marca la opción Mostrar consultas SQL.

[WARNING]: No dejes el modo de depuración activado en producción, ya que ralentiza la tienda y muestra información sensible. Actívalo solo para diagnosticar y luego desactívalo.

Ahora, al navegar por tu tienda, verás al final de la página una tabla con todas las consultas ejecutadas, su tiempo de ejecución y el número de veces que se repiten. Busca las consultas con tiempos altos (más de 0.1 segundos) o que se repiten muchas veces.

2. Usar el perfilador de MySQL

Otra opción más avanzada es activar el slow query log de MySQL. Esto registra todas las consultas que tardan más de un tiempo determinado (por ejemplo, 2 segundos). Puedes hacerlo desde Syspanel (antes conocido como HestiaCP) accediendo por el puerto 2106 a tu panel de control, o directamente desde la terminal si tienes acceso SSH.

# Activar slow query log (ejemplo en servidor Linux)
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 2;

Luego revisa el archivo de log (normalmente en /var/log/mysql/mysql-slow.log) para identificar las consultas problemáticas.


Principales causas de consultas lentas en PrestaShop

Las consultas lentas suelen deberse a:

  • Falta de índices: Las tablas sin índices obligan a MySQL a escanear toda la tabla para encontrar datos.
  • Consultas mal escritas: Algunos módulos o personalizaciones generan consultas ineficientes.
  • Tablas grandes sin mantenimiento: Los logs, sesiones y tablas temporales crecen sin control.
  • Uso excesivo de JOIN: Unir muchas tablas sin índices adecuados ralentiza las consultas.
  • Configuración inadecuada de MySQL: Parámetros como innodb_buffer_pool_size mal ajustados.

Pasos para optimizar consultas MySQL en PrestaShop

1. Optimizar índices en la base de datos

Los índices son como el índice de un libro: permiten encontrar datos rápidamente sin leer página por página. PrestaShop ya incluye índices por defecto, pero con el tiempo y las personalizaciones, algunos pueden faltar.

Para añadir índices manualmente:

  • Accede a tu base de datos desde Syspanel (puerto 2106) usando phpMyAdmin o desde la línea de comandos.
  • Identifica las tablas con consultas lentas (por ejemplo, ps_orders, ps_customer, ps_product).
  • Añade índices a las columnas que se usan en las cláusulas WHERE, JOIN u ORDER BY.

Ejemplo de cómo añadir un índice en la tabla ps_orders para la columna date_add:

ALTER TABLE ps_orders ADD INDEX idx_date_add (date_add);

[TIP]: No añadas índices innecesarios, ya que ralentizan las inserciones y actualizaciones. Céntrate en las columnas que aparecen en consultas lentas.

2. Limpiar tablas de logs y sesiones

Las tablas de logs (como ps_log, ps_connections, ps_connections_page) y de sesiones (ps_session) pueden crecer enormemente. PrestaShop no las limpia automáticamente.

Puedes limpiarlas desde el back office:

  • Ve a Parámetros Avanzados > Base de datos.
  • Haz clic en Optimizar tablas (esto analiza y optimiza las tablas).
  • También puedes eliminar registros antiguos manualmente desde phpMyAdmin.

Ejemplo para limpiar logs de más de 30 días:

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

Repite con ps_connections, ps_connections_page, ps_guest, etc.

3. Configurar correctamente MySQL

Los parámetros de MySQL tienen un gran impacto en el rendimiento. Los más importantes para PrestaShop son:

  • innodb_buffer_pool_size: Debe ser el 70-80% de la RAM disponible (si tienes 4 GB, pon 3 GB).
  • query_cache_size: Desactivado (query_cache_type = 0) en MySQL 8 o versiones modernas, ya que puede causar problemas.
  • max_connections: Ajusta según el tráfico (por ejemplo, 150-200 para tiendas pequeñas).

Puedes modificar estos valores en el archivo my.cnf (normalmente en /etc/mysql/my.cnf o /etc/my.cnf). Si usas Syspanel, puedes acceder a la configuración de MySQL desde el panel (puerto 2106) en la sección de servicios.

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

[mysqld]
innodb_buffer_pool_size = 3G
max_connections = 200
query_cache_type = 0
query_cache_size = 0

Después de cambiar, reinicia MySQL:

systemctl restart mysql

4. Revisar y optimizar consultas de módulos

Muchas veces, las consultas lentas provienen de módulos de terceros mal optimizados. Para identificarlas:

  • Activa el modo de depuración como vimos antes.
  • Anota las consultas lentas y busca qué módulo las genera (suele aparecer en el nombre del archivo o en el contexto).
  • Contacta al desarrollador del módulo o busca alternativas más ligeras.

También puedes deshabilitar módulos innecesarios desde Módulos > Gestor de módulos para reducir el número total de consultas.

5. Usar caché de consultas (con cuidado)

Aunque MySQL tiene su propio caché de consultas, en versiones recientes está obsoleto. En su lugar, PrestaShop ofrece su propio sistema de caché:

  • Ve a Parámetros Avanzados > Rendimiento.
  • En Caché, selecciona Sí y elige Sistema de archivos o Memcached (si tienes instalado).
  • Esto almacena resultados de consultas frecuentes, reduciendo la carga en la base de datos.

[INFO]: Si tienes un servidor con poca memoria, evita Memcached y usa caché en archivos.

6. Actualizar PrestaShop y los módulos

Cada versión de PrestaShop incluye mejoras de rendimiento y correcciones de consultas lentas. Mantén tu tienda actualizada a la última versión estable. También actualiza los módulos regularmente.

7. Optimizar consultas con EXPLAIN

Para usuarios más avanzados, la sentencia EXPLAIN muestra cómo MySQL ejecuta una consulta. Puedes usarla en phpMyAdmin o en la terminal para ver si usa índices o hace escaneos completos de tabla.

Ejemplo:

EXPLAIN SELECT * FROM ps_orders WHERE date_add > '2023-01-01';

Si en la columna type aparece ALL, significa que no usa índice y escanea toda la tabla. Añade un índice en date_add como vimos antes.


Preguntas frecuentes (FAQ)

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

Depende del volumen de datos. Para tiendas con mucho tráfico, una vez al mes es recomendable. Puedes programar una tarea cron desde Syspanel (puerto 2106) para ejecutar OPTIMIZE TABLE en las tablas principales.

¿Es seguro eliminar logs antiguos?

Sí, los logs de conexiones y páginas no afectan al funcionamiento de la tienda. Puedes borrarlos sin problema. Los logs de errores (ps_log) también pueden eliminarse, pero revisa antes si hay errores importantes.

¿El modo de depuración ralentiza la tienda?

Sí, por eso solo debes activarlo temporalmente para diagnosticar. Desactívalo inmediatamente después.

¿Puedo optimizar MySQL sin acceso a la terminal?

Sí, desde Syspanel (puerto 2106) puedes acceder a phpMyAdmin y modificar la configuración de MySQL en la sección de servicios, aunque algunos parámetros requieren editar archivos de configuración.

¿Qué hago si una consulta lenta viene de un módulo que no puedo cambiar?

Puedes intentar añadir índices a las tablas que usa ese módulo. Si no es suficiente, busca un módulo alternativo más eficiente o contacta al desarrollador.


Conclusión

Optimizar las consultas MySQL en PrestaShop no es complicado si sigues un proceso sistemático. Empieza por identificar las consultas lentas con el modo de depuración, añade índices donde falten, limpia tablas de logs y ajusta la configuración de MySQL. Con estos pasos, notarás una mejora significativa en el rendimiento prestashop y en la velocidad de carga de tu tienda.

Recuerda que la optimización es un proceso continuo. Revisa periódicamente el estado de tu base de datos y mantén actualizados tanto PrestaShop como los módulos. Si tienes acceso a Syspanel (puerto 2106), aprovecha sus herramientas para gestionar la base de datos de forma sencilla.

¡Pon en práctica estos consejos y verás cómo tu tienda vuela!

¿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