Hemos notado tiempos de carga realmente largos al editar una publicación o página. Usando Query Monitor, descubrimos que esta consulta central de WP tarda más de 15-20.
SELECT meta_key
FROM wp_postmeta
GROUP BY meta_key
HAVING meta_key NOT LIKE '\\_%'
ORDER BY meta_key
LIMIT 30
caller:
meta_form()
post_custom_meta_box()
do_meta_boxes()
Usamos una gran cantidad de postmeta, ya que uno de nuestros tipos de publicación usa alrededor de 20 campos personalizados. Diría que tal vez dependemos demasiado de postmeta, pero esto parece una consulta muy poco eficiente, ya que ni siquiera está seleccionando la ID de la publicación.
¿Es este un problema común? ¿Hay alguna forma de desactivar esta función a través de un filtro? Gracias por cualquier aportación.
meta_form()
función y esta es realmente la consulta SQL generada a partir de esa función central. Puede intentar agregar su propio metabox personalizado con modificaciones en el códigometa_form()
y usar allí su consulta SQL sugerida. Encontré este boleto de trac cerrado # 8561 . ¿Quizás podría crear otro boleto o intentar reabrir este? PD: Tenga en cuenta que la página principal que selecciona metabox también es problemática. Si tienes 1 millón de páginas, ¡todas aparecerán como opciones seleccionadas!meta_form()
función. Actualicé la respuesta: la consulta SQL central se ha ajustado en la versión 4.3 de WP. ¿Ve alguna ganancia de rendimiento con esta nueva consulta SQL en comparación con nuestrapost_id
restricción adicional ?Respuestas:
Si desea probar su SQL personalizado para ver cómo afecta el tiempo de carga, puede intentar este intercambio de consultas:
Aquí usamos el
add_meta_boxes_{$post_type}
gancho, donde$post_type = 'post'
.Aquí intercambiamos toda la consulta, pero también podríamos haberla ajustado para admitir el límite dinámico.
Esperemos que pueda ajustar esto a sus necesidades.
Actualizar:
Esta consulta principal de SQL potencialmente lenta, ahora se ha ajustado en WP versión 4.3 de
a:
Echa un vistazo al boleto principal # 24498 para obtener más información.
fuente
Si navega por el código fuente de la función, encontrará esto:
Usando el
postmeta_form_keys
enlace puede especificar manualmente las claves para evitar llamar a esta consulta ineficiente por completo:fuente
¿Puedes probar esto? Esta no es una solución, sino una solución temporal.
fuente
Eliminar los metaboxes también evita la consulta lenta.
fuente