As atualizações de índices são duplas.
A primeira parte é inserir/atualizar/excluir a entrada no/do índice. O índice é atualizado assim que um registro é alterado e esse processo bloqueia a consulta até a conclusão.
Isso permite uma recuperação mais rápida de registros com base em uma condição a em uma coluna indexada, a finalidade mais bem compreendida de um índice.
A segunda parte é atualizar as estatísticas do índice. Isso permite que o otimizador determine se para uma determinada consulta vale a pena usar o índice. Imagine uma consulta como
SELECT * FROM users WHERE disabled = 0
. Suponha que a maioria dos usuários esteja de fato ativa. Se as estatísticas do índice estiverem atualizadas, o otimizador perceberá que a maioria dos registros da tabela será retornada pela consulta, a tabela precisará quase inteiramente ser verificada. Ele provavelmente decidirá não usar o índice e examinará a tabela imediatamente. Esta atualização não ocorre automaticamente exceto em casos muito específicos situações . Essas estatísticas devem ser atualizadas manualmente regularmente com um
ANALYZE TABLE [table_name]