Quais são alguns dos motivos pelos quais um índice do MySQL seria 12X do tamanho da tabela?

3

Portanto, temos uma tabela que possui dois índices, um na chave primária e outro em outra coluna da tabela. O tamanho do índice é atualmente 12X maior que a própria tabela. Quais são algumas das razões pelas quais isso aconteceria? Nós otimizamos a tabela antes e ela ajudou, mas está crescendo novamente.

Obrigado!

    
por Jon 22.11.2010 / 22:58

2 respostas

0

Esse tamanho não é incomum com índices, especialmente para campos de texto grandes. Embora possa ser indicativo de uma estratégia de indexação deficiente, o texto é notavelmente mais complexo para indexar do que para números, especialmente se a ativação de pesquisas de substring não estiverem ancoradas no início do campo de texto.

Embora um grande índice possa parecer lento por sua natureza, ele pode (ou deveria) ser navegado rapidamente devido à sua natureza altamente estruturada e, assim, fornecer indicadores para os dados corretos mais rapidamente do que uma pesquisa exaustiva dos dados em si. / p>

Supondo que eles continuarão a caber no disco, os testes reais de seus índices são tempos satisfatórios de pesquisa, atualização e adição, especialmente à medida que a quantidade de dados é dimensionada. Se esses aspectos continuarem adequados, um índice grande é tolerável.

    
por 23.11.2010 / 00:16
0

Fatores que podem influenciar negativamente o tamanho de um índice

  • Distribuição de dados (isto é, se é uniforme ou tendenciosa)
  • Ordem de dados sendo inseridos / excluídos / atualizados (isto é, se não forem aleatórios)
  • Para varchar, o tamanho e o charset do varchar
  • Para innodb, usar um tipo de dados desnecessariamente grande para a chave primária afetará a contribuição de cada índice, pois é implicitamente parte dele

Como você observou, reescrever o índice (ou seja, otimizar a tabela) pode / vai equilibrar a estrutura do índice novamente.

    
por 23.11.2010 / 18:40