"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que minhas consultas \"SELECT COUNT(*)\" na tabela change_event são tão lentas?

Por que minhas consultas \"SELECT COUNT(*)\" na tabela change_event são tão lentas?

Publicado em 2024-11-18
Navegar:378

Why are my \

Como lidar com consultas lentas "SELECT COUNT(*)" no MySQL

Sua consulta na tabela change_event, contando as linhas que excedem um change_event_id específico , está enfrentando atrasos significativos. Mas por que? Vamos nos aprofundar nas possíveis causas.

Revelando o comportamento do InnoDB

O mecanismo InnoDB do MySQL utiliza chaves primárias agrupadas, o que significa que a chave primária é armazenada junto com os dados de linha nas páginas de dados, em vez de do que páginas de índice separadas. Como resultado, varreduras de intervalo, como a sua, exigem a varredura de todas as linhas potencialmente largas nas páginas de dados. Esse fator é agravado pela coluna xml_diff da tabela, um tipo de dados TEXT que retarda ainda mais o processamento.

Estratégias de otimização

Para acelerar a consulta, vale a pena considerar duas abordagens :

  • Optimize Table: Este comando reorganiza as páginas de dados em ordem de classificação, melhorando potencialmente a eficiência do intervalo scans.
  • Criar índice adicional: Estabelecer um índice não primário somente na coluna change_event_id cria uma cópia dessa coluna nas páginas de índice. Este índice pode ser digitalizado consideravelmente mais rápido do que as páginas de dados. Verifique o plano de explicação após a criação para confirmar sua utilização.

Dica adicional:

Para melhorar ainda mais o desempenho, considere alterar a coluna change_event_id para bigint unsigned. Esta etapa evita valores negativos e também pode agilizar o processamento.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3