Otimizar o banco de dados é uma arte que separa os juniores que “fazem funcionar” dos seniores que “fazem escalar”.
No WordPress, a tabela wp_posts é frequentemente o coração do sistema, mas também o seu maior gargalo.
Entender como o MySQL processa suas consultas é o primeiro passo para o sucesso.
Neste artigo, vamos dissecar o comando EXPLAIN ANALYZE e aprender a criar estratégias de indexação imbatíveis.
Se o seu site WordPress demora mais de 200ms para carregar o primeiro byte, o problema provavelmente está no SQL.
Vamos entender o funcionamento interno das estruturas de dados B-Tree e por que elas são vitais para você.
A Estrutura B-Tree: O Coração dos Índices
Um índice no MySQL funciona como o índice remissivo de um livro técnico.
Sem ele, o banco precisa realizar um “Full Table Scan”, lendo linha por linha do disco.
O MySQL usa predominantemente a estrutura B-Tree (Balanced Tree) para seus índices.
Essa estrutura permite que o motor de busca encontre qualquer registro em uma tabela de milhões de linhas com apenas alguns pulos.
Entretanto, índices em excesso podem prejudicar a performance de escrita (INSERT/UPDATE).
Cada novo registro exige que todos os índices sejam recalculados e reorganizados em disco.
-- Analisando uma consulta lenta no WordPress
EXPLAIN ANALYZE
SELECT * FROM wp_posts
WHERE post_status = 'publish'
AND post_author = 1
ORDER BY post_date DESC;
Ao rodar o código acima, você verá o custo da consulta e a estratégia escolhida pelo otimizador do MySQL.
Preste atenção especial à coluna “type”.
Se você encontrar “ALL”, significa que um escaneamento completo está ocorrendo.
O objetivo de um especialista é sempre ver “ref” ou “index_merge”.
Criar um índice composto (Composite Index) nas colunas de filtragem e ordenação pode reduzir o tempo de resposta em até 90%.
Didaticamente: a ordem das colunas no índice composto importa tanto quanto a query em si.
Estratégias de Buffer Pool e Cache
Além dos índices, o innodb_buffer_pool_size é o parâmetro mais crítico do seu servidor MySQL.
Ele define quanto da sua RAM será usada para manter os índices e dados em memória.
Em um mundo ideal, seu banco de dados caberia inteiro dentro da RAM.
Quando o MySQL precisa buscar dados no SSD, a latência sobe de microssegundos para milissegundos.
Para WordPress de alta performance, recomendamos que o buffer pool ocupe cerca de 70% da memória total do servidor.
Mantenha seus índices “quentes” na memória para garantir que as buscas sejam instantâneas.
Outro ponto negligenciado é a fragmentação de tabelas.
Após milhares de exclusões e inserções, o espaço físico em disco torna-se desorganizado.
Rodar um OPTIMIZE TABLE wp_posts; periodicamente pode recuperar espaço e melhorar o alinhamento de leitura.
O sênior sabe que performance não é apenas sobre o código novo, mas sobre cuidar da infraestrutura existente.
A manutenção preventiva é o que garante a paz do desenvolvedor durante os picos de acesso.
Dominar o MySQL é dominar a base de tudo que construímos na web.


