Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL usa filesort na coluna TIMESTAMP indexada


Neste caso, o MySQL não está usando seu índice para ordenação, e isso é bom. Por quê? Sua tabela contém apenas 64k linhas, a largura média da linha é de cerca de 26 bytes (se eu adicionar os tamanhos das colunas corretamente), então o tamanho total da tabela no disco deve ser em torno de 2 MB. É muito barato ler apenas 2 MB de dados do disco na memória (provavelmente em apenas 1-2 operações de disco ou buscas) e, em seguida, basta executar a classificação de arquivos na memória (provavelmente uma variação de classificação rápida).

Se o MySQL recuperasse por ordem de índice como você deseja, ele teria que executar 64.000 operações de busca de disco, um registro após o outro! Teria sido muito, muito lento.

Os índices podem ser bons quando você pode usá-los para pular rapidamente para um local conhecido em um arquivo enorme e ler apenas uma pequena quantidade de dados, como na cláusula WHERE. Mas, neste caso, não é uma boa ideia - e o MySQL não é estúpido!

Se sua tabela fosse muito grande (mais do que o tamanho da RAM), o MySQL certamente começaria a usar seu índice - e isso também é bom.