Escolha o menor tipo que armazene corretamente todos os valores que você algum dia irá guardar. O tipo certo economiza disco, encolhe índices e evita corrupção silenciosa de dados.
Escolha o menor tipo que armazene corretamente todos os valores que você algum dia irá guardar. O tipo certo economiza disco, encolhe índices e evita corrupção silenciosa de dados.
INT (4 bytes) para a maioria dos ids; BIGINT (8 bytes) apenas quando você realmente ultrapassar ~2,1 bilhões.DECIMAL(10,2) para dinheiro — nunca FLOAT/DOUBLE, que arredondam em binário e perdem centavos.VARCHAR(n) para texto limitado (nomes, e-mails); o n é um teto, o armazenamento é só o que você usa.TEXT para blobs grandes (artigos) — é armazenado fora da página e não pode ter um default; não o use para valores curtos pelos quais você filtra.DATETIME (sem fuso horário, 8 bytes) vs TIMESTAMP (convertido para UTC, 4 bytes, limite ~2038).CREATE TABLE payments (
id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
amount DECIMAL(10,2) NOT NULL, -- exact money, not FLOAT
currency CHAR(3) NOT NULL, -- always 3 chars -> fixed CHAR
note VARCHAR(255), -- bounded, indexable
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
);
-- Pitfall: the default SQL mode rejects bad values (good) --
INSERT INTO payments (amount) VALUES ('abc'); -- ERROR 1366, not silently 0
FLOAT para dinheiro.VARCHAR(255) em todo lugar por hábito — chaves grandes demais incham os índices.UNSIGNED em ids/contagens que nunca são negativos (dobra o intervalo positivo).Tipos de dados são a decisão de correção e desempenho mais barata que você toma, e a mais difícil de mudar depois — tipos estreitos e exatos mantêm os índices pequenos e barram dados ruins na porta antes que virem um bug em produção.
Uma biblioteca de perguntas de entrevista de TI com respostas detalhadas — de Júnior a Sênior.
Doar