Eu tenho uma chave DATETIME na qual classifico os resultados e a consulta está sendo executada muito lentamente. Será executado mais rápido se eu mudar para TIMESTAMP?
Porque notei que a ordenação por teclas numeradas é feita quase instantaneamente.
Você pode reduzir o tipo de execução das consultas indexando determinadas colunas.
Como você mencionou a classificação dos campos DATETIME, uma das melhores maneiras de ignorar a classificação dos resultados da tabela temporária é usar um índice de cobertura que inclua DATETIME como a última coluna de qualquer índice composto necessário.
Eu sei que isso é totalmente possível porque em um link sobre Índices de Cobertura de Ronald Bradford , ele forneceu uma lista de tópicos futuros que estava apresentando. Aqui está essa lista:
datetime consome 8 bytes enquanto timestamp 4 bytes. Assim a consulta será mais rápida já que o tamanho do índice será menor. Além disso, o carimbo de data/hora tem um intervalo menor do que data e hora e, portanto, pode ser chamado de tipo de dados otimizado por padrão.
Mas não tenho certeza de até que ponto será mais rápido. Pode ser 5% ou 10%?
Você pode descobrir no final que não vale a pena todo o esforço de mudar o tipo de dados!
Conforme apontado para mim nos comentários, isso se refere principalmente ao SQL Server, e não ao MySql, como as question tags solicitadas.
No servidor SQL, Timestamp é uma coluna especial e também conhecida como rowversion. É um contador global, sempre que uma linha é atualizada, a versão da linha é aumentada em 1 e isso é registrado na linha atualizada. Não registra um tempo.
Isso significa que ele mudará sempre que for atualizado, o que o torna um candidato ruim para uma chave.
Se for necessária uma coluna que seja atualizada automaticamente sempre que a linha for, não precisa armazenar o tempo, mas apenas a ordem das atualizações, então ela pode ser usada.
Seja qual for o servidor, ele poderia beneficiar um pouco o desempenho, você teria que medir e ver, mas teria quase nenhum impacto em comparação com a adição de um índice.