Rinkitės mažiausią tipą, kuris teisingai talpina kiekvieną reikšmę, kurią kada nors saugosite. Tinkamas tipas taupo diską, sumažina indeksus ir užkerta kelią tyliam duomenų sugadinimui.
Rinkitės mažiausią tipą, kuris teisingai talpina kiekvieną reikšmę, kurią kada nors saugosite. Tinkamas tipas taupo diską, sumažina indeksus ir užkerta kelią tyliam duomenų sugadinimui.
INT (4 baitai) daugumai id; BIGINT (8 baitai) tik tada, kai tikrai peraugate ~2,1 milijardo.DECIMAL(10,2) pinigams — niekada FLOAT/DOUBLE, kurie apvalina dvejetainiu pavidalu ir pameta centus.VARCHAR(n) ribotam tekstui (vardai, el. paštai); n yra viršutinė riba, o saugoma tik tiek, kiek naudojate.TEXT didelėms reikšmėms (straipsniams) — jis saugomas už puslapio ribų ir negali turėti numatytosios reikšmės (default); nenaudokite jo trumpoms reikšmėms, pagal kurias filtruojate.DATETIME (be laiko juostos, 8 baitai) prieš TIMESTAMP (konvertuojamas į UTC, 4 baitai, ~2038 riba).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 naudojimas pinigams.VARCHAR(255) visur iš įpročio — per dideli raktai išpučia indeksus.UNSIGNED pamiršimas id/skaitikliuose, kurie niekada nebūna neigiami (padvigubina teigiamą diapazoną).Duomenų tipai yra pigiausias teisingumo ir našumo sprendimas, kurį priimate, ir sunkiausiai vėliau pakeičiamas — siauri, tikslūs tipai išlaiko indeksus mažus ir sustabdo blogus duomenis prie durų, kol jie netapo produkcijos klaida.
IT pokalbių klausimų biblioteka su išsamiais atsakymais — nuo Junior iki Senior.
Paaukoti