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

Optimizar base de datos en PrestaShop para mejorar rendimiento

Actualizado el 14 de mayo de 2026

¿Tu tienda PrestaShop va lenta? ¿Las páginas tardan en cargar y los clientes se impacientan? Antes de culpar a tu hosting o a tu conexión, hay un factor crítico que muchos pasan por alto: la base de datos. Con el tiempo, las tablas de MySQL se llenan de registros temporales, sesiones obsoletas y datos huérfanos que lastran el rendimiento de tu tienda. En este tutorial completo, te guiaré paso a paso para optimizar base de datos en PrestaShop, limpiarla y mantenerla ágil. No necesitas ser un experto técnico; solo sigue estas instrucciones y notarás la diferencia.


¿Por qué es importante optimizar la base de datos en PrestaShop?

Cada vez que un usuario navega por tu tienda, PrestaShop realiza consultas a la base de datos para mostrar productos, carritos, pedidos y sesiones. Con el tiempo, se acumulan datos innecesarios:

  • Sesiones de visitantes que no se borran automáticamente.
  • Carritos abandonados que ocupan espacio.
  • Registros de búsqueda y estadísticas antiguas.
  • Tablas fragmentadas que ralentizan las consultas.

Una base de datos limpia y optimizada reduce el tiempo de respuesta del servidor, acelera la carga de páginas y mejora la experiencia de usuario. Además, ayuda a que tu tienda escale mejor cuando recibas más tráfico.


Antes de empezar: prepara tu entorno

Requisitos básicos

  • Acceso a tu panel de control de hosting o a Syspanel (puerto 2106).
  • Credenciales de la base de datos MySQL (usuario, contraseña y nombre de la BD).
  • Un backup reciente de tu base de datos. Siempre haz una copia de seguridad antes de modificar nada.

[WARNING] Nunca trabajes directamente sobre la base de datos en producción sin un backup. Un error puede borrar datos críticos.

Accede a tu base de datos desde Syspanel

  1. Inicia sesión en Syspanel (puerto 2106).
  2. Ve a la sección Base de datos o MySQL.
  3. Busca la base de datos de tu PrestaShop (suele llamarse igual que tu dominio o tener un prefijo como prestashop_).
  4. Haz clic en phpMyAdmin para abrir la herramienta de gestión.

Si no tienes phpMyAdmin, puedes usar la línea de comandos MySQL, pero para este tutorial asumiremos que usas phpMyAdmin.


Paso 1: Identifica las tablas más problemáticas

PrestaShop tiene más de 200 tablas. Las que más afectan al rendimiento son:

  • ps_connections y ps_connections_page (estadísticas de visitas).
  • ps_guest (datos de visitantes anónimos).
  • ps_cart y ps_cart_product (carritos abandonados).
  • ps_search_index y ps_search_word (índice de búsqueda).
  • ps_sessions (sesiones de usuarios).
  • ps_log (registros de actividad).

Puedes ver el tamaño de cada tabla desde phpMyAdmin: selecciona tu base de datos y haz clic en Estructura. Ordena por Tamaño para ver las más pesadas.


Paso 2: Limpieza manual de datos obsoletos

Eliminar sesiones caducadas

Las sesiones de usuarios que ya no están activos se acumulan. En phpMyAdmin, ejecuta esta consulta SQL:

DELETE FROM ps_sessions WHERE last_activity < (UNIX_TIMESTAMP() - 86400);

Nota: 86400 segundos = 24 horas. Ajusta el número según tu criterio.

Limpiar carritos abandonados

Los carritos abandonados de más de 30 días suelen ser basura. Primero, identifica los carritos antiguos:

SELECT id_cart FROM ps_cart WHERE date_upd < DATE_SUB(NOW(), INTERVAL 30 DAY);

Luego, elimina los registros relacionados:

DELETE FROM ps_cart_product WHERE id_cart IN (SELECT id_cart FROM ps_cart WHERE date_upd < DATE_SUB(NOW(), INTERVAL 30 DAY));
DELETE FROM ps_cart WHERE date_upd < DATE_SUB(NOW(), INTERVAL 30 DAY);

[INFO] Si vendes productos digitales o tienes descargas, no elimines carritos con pedidos asociados. Asegúrate de que los carritos a eliminar no estén vinculados a pedidos confirmados.

Vaciar estadísticas de conexiones

Las tablas ps_connections y ps_connections_page crecen rápido. Puedes truncarlas (borrar todo su contenido) si no necesitas estadísticas históricas:

TRUNCATE TABLE ps_connections;
TRUNCATE TABLE ps_connections_page;

Si necesitas conservar algunos datos, elimina solo los registros anteriores a una fecha:

DELETE FROM ps_connections WHERE date_add < '2024-01-01';

Limpiar registros de búsqueda

La tabla ps_search_index puede contener palabras de búsqueda antiguas. Para limpiarla:

TRUNCATE TABLE ps_search_index;
TRUNCATE TABLE ps_search_word;

Luego, desde el panel de administración de PrestaShop, ve a Parámetros de la tienda > Búsqueda y haz clic en Reindexar. Esto regenerará el índice con datos actuales.


Paso 3: Optimizar tablas con MySQL

Después de eliminar datos, las tablas quedan fragmentadas. La optimización compacta el espacio y mejora el rendimiento.

Desde phpMyAdmin

  1. Selecciona todas las tablas de tu base de datos.
  2. En el menú desplegable Con seleccionados, elige Optimizar tabla.

Desde SQL

Ejecuta este comando para optimizar todas las tablas de tu base de datos:

OPTIMIZE TABLE ps_access, ps_accessory, ps_address, ps_address_format, ps_advancedeucompliance, ps_attachment, ps_attachment_lang, ps_attribute, ps_attribute_group, ps_attribute_group_lang, ps_attribute_impact, ps_attribute_lang, ps_badge, ps_badge_lang, ps_carrier, ps_carrier_group, ps_carrier_lang, ps_carrier_shop, ps_carrier_tax_rules_group_shop, ps_cart, ps_cart_product, ps_cart_rule, ps_cart_rule_carrier, ps_cart_rule_combination, ps_cart_rule_country, ps_cart_rule_group, ps_cart_rule_lang, ps_cart_rule_product_rule, ps_cart_rule_product_rule_group, ps_cart_rule_shop, ps_category, ps_category_group, ps_category_lang, ps_category_product, ps_category_shop, ps_cms, ps_cms_category, ps_cms_category_lang, ps_cms_category_shop, ps_cms_lang, ps_cms_shop, ps_compare, ps_condition, ps_condition_badge, ps_configuration, ps_configuration_kpi, ps_configuration_lang, ps_connections, ps_connections_page, ps_contact, ps_contact_lang, ps_contact_shop, ps_country, ps_country_lang, ps_currency, ps_currency_shop, ps_customer, ps_customer_group, ps_customer_message, ps_customer_session, ps_customer_thread, ps_customization, ps_customization_field, ps_customization_field_lang, ps_date_range, ps_delivery, ps_delivery_detail, ps_employee, ps_employee_lang, ps_employee_shop, ps_feature, ps_feature_lang, ps_feature_product, ps_feature_value, ps_feature_value_lang, ps_gender, ps_gender_lang, ps_group, ps_group_lang, ps_group_reduction, ps_group_shop, ps_guest, ps_hook, ps_hook_alias, ps_hook_module, ps_hook_module_exceptions, ps_image, ps_image_lang, ps_image_shop, ps_image_type, ps_import_match, ps_info, ps_info_lang, ps_info_shop, ps_lang, ps_lang_shop, ps_linksmenutop, ps_log, ps_mail, ps_manufacturer, ps_manufacturer_lang, ps_manufacturer_shop, ps_memcached_servers, ps_message, ps_message_readed, ps_meta, ps_meta_lang, ps_module, ps_module_access, ps_module_country, ps_module_currency, ps_module_group, ps_module_history, ps_module_preference, ps_module_shop, ps_notification, ps_operating_system, ps_order_carrier, ps_order_cart_rule, ps_order_detail, ps_order_detail_tax, ps_order_history, ps_order_invoice, ps_order_invoice_payment, ps_order_invoice_tax, ps_order_message, ps_order_message_lang, ps_order_payment, ps_order_return, ps_order_return_detail, ps_order_slip, ps_order_slip_detail, ps_order_state, ps_order_state_lang, ps_orders, ps_pack, ps_page, ps_page_type, ps_page_viewed, ps_payment_cc, ps_payment_module, ps_payment_preference, ps_product, ps_product_attachment, ps_product_attribute, ps_product_attribute_combination, ps_product_attribute_image, ps_product_attribute_shop, ps_product_carrier, ps_product_comment, ps_product_comment_criterion, ps_product_comment_criterion_lang, ps_product_comment_criterion_product, ps_product_comment_criterion_value, ps_product_comment_grade, ps_product_comment_report, ps_product_comment_usefulness, ps_product_country_tax, ps_product_download, ps_product_group_reduction_cache, ps_product_lang, ps_product_sale, ps_product_shop, ps_product_supplier, ps_product_tag, ps_profile, ps_profile_lang, ps_profile_permission, ps_quick_access, ps_quick_access_lang, ps_range_price, ps_range_weight, ps_referrer, ps_referrer_cache, ps_referrer_shop, ps_request_sql, ps_required_field, ps_risk, ps_risk_lang, ps_search_index, ps_search_word, ps_sendfriend, ps_shop, ps_shop_group, ps_shop_url, ps_specific_price, ps_specific_price_priority, ps_state, ps_statssearch, ps_stock, ps_stock_available, ps_stock_movement, ps_stock_movement_reason, ps_store, ps_store_lang, ps_store_shop, ps_subdomain, ps_supplier, ps_supplier_lang, ps_supplier_shop, ps_supply_order, ps_supply_order_detail, ps_supply_order_history, ps_supply_order_receipt_history, ps_supply_order_state, ps_supply_order_state_lang, ps_tag, ps_tag_count, ps_tax, ps_tax_lang, ps_tax_rule, ps_tax_rules_group, ps_tax_rules_group_shop, ps_timezone, ps_translation, ps_warehouse, ps_warehouse_carrier, ps_warehouse_product_location, ps_web_browser, ps_webservice_account, ps_webservice_account_shop, ps_webservice_permission, ps_zone;

Nota: Reemplaza ps_ por el prefijo de tus tablas si es diferente.

Puedes optimizar todas las tablas con un solo comando (más rápido):

OPTIMIZE TABLE `ps_%`;

Pero en algunos sistemas MySQL esto no funciona. Si falla, usa el primer método.


Paso 4: Configuración interna de PrestaShop para optimizar base de datos

PrestaShop tiene opciones nativas que ayudan a mantener la base de datos ligera.

Activar la limpieza automática de sesiones

  1. Ve a Parámetros avanzados > Rendimiento.
  2. En la sección Gestión de sesiones, activa la opción Eliminar sesiones caducadas automáticamente.
  3. Establece un período de limpieza (por ejemplo, cada 24 horas).

Desactivar estadísticas innecesarias

Las estadísticas detalladas consumen muchos recursos. Ve a Estadísticas > Preferencias y desactiva las que no uses, como Seguimiento de páginas vistas o Registro de búsquedas.

Limitar el historial de pedidos

En Parámetros avanzados > Rendimiento, puedes configurar cuántos días conservar los registros de actividad. Un valor entre 30 y 60 días suele ser suficiente.


Paso 5: Mantenimiento programado (cron job)

Para que la optimización sea automática, programa un cron job que ejecute las consultas de limpieza periódicamente.

Desde Syspanel

  1. En Syspanel (puerto 2106), ve a Cron Jobs.
  2. Crea un nuevo cron job con el comando:
    mysql -u TU_USUARIO -pTU_CONTRASEÑA TU_BASE_DE_DATOS < /ruta/a/tu/script.sql
    
  3. Programa la ejecución, por ejemplo, cada semana (0 0 * * 0).

[TIP] Si no te sientes cómodo con la línea de comandos, puedes usar módulos de PrestaShop como "Advanced Database Cleaner" que automatizan la limpieza desde el panel de administración.


Paso 6: Monitoriza el rendimiento después de la optimización

Después de aplicar los cambios, verifica que todo funcione correctamente:

  • Carga una página de producto: ¿Se siente más rápida?
  • Revisa el tiempo de respuesta con herramientas como Google PageSpeed Insights.
  • Observa el tamaño de la base de datos en phpMyAdmin. Debería haber disminuido notablemente.

Si notas alguna anomalía, restaura tu backup y revisa los pasos.


Preguntas frecuentes (FAQ)

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

Depende del tráfico de tu tienda. Para una tienda pequeña, una vez al mes es suficiente. Para tiendas con mucho tráfico, cada semana.

¿Puedo dañar mi tienda si ejecuto mal una consulta?

Sí, por eso siempre debes hacer un backup antes. Si no estás seguro, usa módulos especializados o pide ayuda a tu hosting.

¿Optimizar la base de datos afecta a los pedidos existentes?

No, si solo eliminas datos obsoletos (sesiones, carritos abandonados, estadísticas). Los pedidos confirmados no se tocan.

¿Qué hago si mi base de datos sigue siendo lenta después de optimizar?

Puede que el problema sea el hosting o la configuración de MySQL. Contacta a tu proveedor de hosting o considera migrar a un servidor con más recursos.

¿Debo optimizar tablas con frecuencia?

Sí, pero no a diario. Una vez al mes es un buen ritmo. La optimización en sí misma consume recursos, así que hazla en horas de bajo tráfico.


Conclusión

Optimizar la base de datos en PrestaShop es una tarea sencilla pero poderosa. Siguiendo este tutorial, has aprendido a identificar tablas problemáticas, limpiar datos obsoletos, optimizar tablas con MySQL y configurar tu tienda para que se mantenga limpia automáticamente. Recuerda siempre hacer backups y programar mantenimientos periódicos. Tu tienda cargará más rápido, tus clientes estarán más contentos y tu negocio crecerá.

Si tienes dudas, deja un comentario o consulta con tu equipo de hosting. ¡Buena suerte con tu tienda PrestaShop!

¿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