Elige el tipo más pequeño que contenga correctamente todos los valores que llegarás a almacenar. El tipo adecuado ahorra disco, reduce los índices y evita la corrupción silenciosa de datos.
Elige el tipo más pequeño que contenga correctamente todos los valores que llegarás a almacenar. El tipo adecuado ahorra disco, reduce los índices y evita la corrupción silenciosa de datos.
INT (4 bytes) para la mayoría de los ids; BIGINT (8 bytes) solo cuando realmente superes los ~2.100 millones.DECIMAL(10,2) para dinero — nunca FLOAT/DOUBLE, que redondean en binario y pierden céntimos.VARCHAR(n) para texto acotado (nombres, correos); la n es un tope, el almacenamiento es solo lo que uses.TEXT para grandes bloques (artículos) — se almacena fuera de página y no puede tener un valor por defecto; no lo uses para valores cortos por los que filtres.DATETIME (sin zona horaria, 8 bytes) frente a TIMESTAMP (convertido a UTC, 4 bytes, límite ~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 dinero.VARCHAR(255) en todas partes por costumbre — las claves sobredimensionadas inflan los índices.UNSIGNED en ids/contadores que nunca son negativos (duplica el rango positivo).Los tipos de datos son la decisión de correctitud y rendimiento más barata que tomas, y la más difícil de cambiar después — tipos estrechos y exactos mantienen los índices pequeños y detienen los datos incorrectos en la puerta antes de que se conviertan en un bug de producción.
Una biblioteca de preguntas de entrevista de IT con respuestas detalladas — de Junior a Senior.
Donar