Vyberte nejmenší typ, který správně pojme každou hodnotu, kterou kdy budete ukládat. Správný typ šetří místo na disku, zmenšuje indexy a brání tichému poškození dat.
Vyberte nejmenší typ, který správně pojme každou hodnotu, kterou kdy budete ukládat. Správný typ šetří místo na disku, zmenšuje indexy a brání tichému poškození dat.
INT (4 bajty) pro většinu id; BIGINT (8 bajtů) jen když skutečně přerostete ~2,1 miliardy.DECIMAL(10,2) pro peníze — nikdy FLOAT/DOUBLE, které zaokrouhlují v binárním tvaru a ztrácejí haléře.VARCHAR(n) pro text s omezenou délkou (jména, e-maily); n je horní hranice, ukládá se jen to, co skutečně použijete.TEXT pro velké bloky (články) — ukládá se mimo stránku a nemůže mít výchozí hodnotu; nepoužívejte jej pro krátké hodnoty, podle kterých filtrujete.DATETIME (bez časové zóny, 8 bajtů) versus TIMESTAMP (převáděný na UTC, 4 bajty, limit kolem roku 2038).CREATE TABLE payments (
id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
amount DECIMAL(10,2) NOT NULL, -- přesné peníze, ne FLOAT
currency CHAR(3) NOT NULL, -- vždy 3 znaky -> pevný CHAR
note VARCHAR(255), -- omezené, indexovatelné
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
);
-- Úskalí: výchozí SQL mode odmítá chybné hodnoty (dobře) --
INSERT INTO payments (amount) VALUES ('abc'); -- ERROR 1366, ne tiše 0
FLOAT pro peníze.VARCHAR(255) všude ze zvyku — předimenzované klíče nafukují indexy.UNSIGNED u id/počtů, které nikdy nejsou záporné (zdvojnásobuje kladný rozsah).Datové typy jsou nejlevnější rozhodnutí o správnosti a výkonu, které učiníte, a zároveň nejhůře se později mění — úzké, přesné typy udržují indexy malé a zastaví chybná data hned u dveří, než se stanou produkční chybou.
Knihovna IT otázek k pohovoru s podrobnými odpověďmi — od Junior po Senior.
Přispět