Observamos tempos de carregamento muito longos ao editar uma postagem ou página. Usando o Query Monitor, descobrimos que essa consulta principal do WP está levando entre 15 e 20 anos.
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 muito postmeta, pois um dos nossos tipos de postagem usa cerca de 20 campos personalizados. Eu diria que talvez confiemos demais no postmeta, mas isso parece ser uma consulta muito ineficiente, já que nem sequer está selecionando o ID da postagem.
Esse é um problema comum? Existe uma maneira de desativar esta função através de um filtro? Obrigado por qualquer entrada.
meta_form()
função e essa é realmente a consulta SQL gerada a partir dessa função principal. Você pode tentar adicionar sua própria metabox personalizada com modificações no códigometa_form()
e usar sua consulta SQL sugerida. Encontrei este bilhete trac fechado nº 8561 . Você poderia criar outro ticket ou tentar reabrir esse? PS: Observe que a página pai que seleciona metabox também é problemática. Se você tiver 1 milhão de páginas, todas elas serão exibidas como opções selecionadas!meta_form()
função. Atualizei a resposta - a consulta SQL principal foi ajustada na versão 4.3 do WP. Você vê algum ganho de desempenho com essa nova consulta SQL em comparação com nossapost_id
restrição adicional ?Respostas:
Se você quiser testar seu SQL personalizado para ver como isso afeta o tempo de carregamento, tente esta troca de consulta:
Aqui usamos o
add_meta_boxes_{$post_type}
gancho, onde$post_type = 'post'
.Aqui trocamos toda a consulta, mas também poderíamos ter ajustado para suportar o limite dinâmico.
Espero que você possa ajustar isso às suas necessidades.
Atualizar:
Essa consulta principal potencialmente lenta do SQL foi ajustada no WP versão 4.3 de
para:
Confira o ticket principal # 24498 para obter mais informações.
fonte
Se você navegar pelo código fonte da função, encontrará o seguinte:
Usando o
postmeta_form_keys
gancho, você pode especificar manualmente as chaves para evitar chamar completamente essa consulta ineficiente:fonte
Você pode tentar isso? Esta não é uma solução, mas uma solução temporária.
fonte
A remoção dos metaboxes também impede a consulta lenta.
fonte