Estava pensando em criar uma tabela que poderia ter muitos registros, possivelmente mais que 2 bilhões - o tamanho do tipo INT no MySQL. Minha opção era usar o tipo BIGINT (de 64 bits), cujo máximo é um número tão absurdamente grande (9*10
18) que é, para todos os efeitos, inatingível.
Eu poderia deixar os campos com o tipo INT e depois alterá-los para BIGINT quando necessário, mas isso poderia gerar problemas na fase de conversão; então preferi usar o tipo BIGINT desde o começo.
No entanto, lendo hoje sobre
Database Sharding, aprendi que bases muito grandes costumam ser divididas para melhorar a performance. Aí me caiu a ficha de que, na prática, eu nunca teria uma tabela com 2 bilhões de registros. Isso é mais do que o meu servidor de hospedagem oferece no plano mais caro. Levando em conta que cada registro teria mais de cem bytes, isso supera o tamanho do disco onde meu site está hospedado. De qualquer forma, uma tabela muito grande precisa ser particionada para permanecer útil.
Felizmente estou aprendendo essas coisas antes de começar a implementar. E vou usar o tipo INT.