Optimizando consultas pesadas sobre wp_postmeta en catálogos de WooCommerce
Estrategias de indexación compuesta en MariaDB, tablas de búsqueda aplanadas y transitorios en memoria para catálogos con más de 10.000 referencias.
Ficha de laminación y parámetros de impresión
El cuello de botella intrínseco del modelo EAV en WordPress
La flexibilidad del modelo Entidad-Atributo-Valor (EAV) implementado en wp_postmeta es una de las virtudes históricas de WordPress, permitiendo a cualquier plugin guardar propiedades arbitrarias sin alterar el esquema relacional. Sin embargo, en tiendas con miles de referencias y múltiples filtros de atributos, se convierte en el mayor cuello de botella del servidor.
Una consulta con tres cláusulas meta_query requiere tres JOINs independientes sobre una tabla que puede acumular fácilmente más de dos millones de registros, forzando la creación de tablas temporales en disco.
Diagnóstico con EXPLAIN y análisis de bloqueos I/O
Ejecutando EXPLAIN ANALYZE sobre la consulta estándar de WooCommerce descubrimos que el optimizador de MariaDB descartaba el índice por defecto de post_id para realizar un recorrido de rango completo. Esto saturaba las colas de E/S de almacenamiento y disparaba el tiempo de primer byte (TTFB) por encima del segundo y medio.
«Medir antes de optimizar es una regla inviolable: cambiar código sin examinar el plan de ejecución de la base de datos es disparar a ciegas.»
Indexación compuesta y consultas pivotadas con JOIN explícito
La incorporación de un índice compuesto sobre (meta_key(191), meta_value(100)) permitió al motor satisfacer las condiciones de filtrado directamente en memoria sin leer el bloque de datos de la fila. La latencia cayó inmediatamente de 1.420 ms a menos de 45 ms.
Persistencia de resultados en transitorios con invalidación por webhook
Para catálogos con tráfico elevado en Galicia, cacheamos los IDs de los conjuntos de productos más consultados en la API de transitorios de WordPress. Cuando se actualiza el inventario o cambia un precio, un hook en save_post_product invalida selectivamente la clave correspondiente sin penalizar a los compradores concurrentes.
Ingeniero y artesano de software en Galicia. Combino arquitectura limpia en WordPress, scripts de automatización en Python y diseño físico para fabricación digital.