Wybierz najmniejszy typ, który poprawnie pomieści każdą wartość, jaką kiedykolwiek będziesz przechowywać. Właściwy typ oszczędza miejsce na dysku, zmniejsza indeksy i zapobiega cichemu uszkodzeniu danych.
Wybierz najmniejszy typ, który poprawnie pomieści każdą wartość, jaką kiedykolwiek będziesz przechowywać. Właściwy typ oszczędza miejsce na dysku, zmniejsza indeksy i zapobiega cichemu uszkodzeniu danych.
INT (4 bajty) dla większości identyfikatorów; BIGINT (8 bajtów) tylko wtedy, gdy naprawdę przekraczasz ~2,1 miliarda.DECIMAL(10,2) dla pieniędzy — nigdy FLOAT/DOUBLE, które zaokrąglają w systemie binarnym i gubią grosze.VARCHAR(n) dla tekstu o ograniczonej długości (nazwiska, e-maile); n to górny limit, a zajmowane miejsce odpowiada tylko temu, co faktycznie wykorzystasz.TEXT dla dużych bloków danych (artykuły) — przechowywany poza stroną i nie może mieć wartości domyślnej; nie używaj go dla krótkich wartości, po których filtrujesz.DATETIME (bez strefy czasowej, 8 bajtów) kontra TIMESTAMP (konwertowany na UTC, 4 bajty, limit ~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 do pieniędzy.VARCHAR(255) wszędzie z przyzwyczajenia — zbyt duże klucze rozdmuchują indeksy.UNSIGNED przy identyfikatorach/licznikach, które nigdy nie są ujemne (podwaja zakres dodatni).Typy danych to najtańsza decyzja dotycząca poprawności i wydajności, jaką podejmujesz, a zarazem najtrudniejsza do zmiany później — wąskie, precyzyjne typy utrzymują indeksy małymi i zatrzymują błędne dane u progu, zanim staną się błędem produkcyjnym.
Biblioteka pytań rekrutacyjnych IT ze szczegółowymi odpowiedziami — od Juniora do Seniora.
Wesprzyj