Pilih jenis terkecil yang menyimpan setiap nilai dengan betul yang akan anda simpan. Jenis yang tepat menjimatkan cakera, mengecilkan indeks, dan menghalang kerosakan data secara senyap.
Pilih jenis terkecil yang menyimpan setiap nilai dengan betul yang akan anda simpan. Jenis yang tepat menjimatkan cakera, mengecilkan indeks, dan menghalang kerosakan data secara senyap.
INT (4 bait) untuk kebanyakan id; BIGINT (8 bait) hanya apabila anda benar-benar melebihi ~2.1 bilion.DECIMAL(10,2) untuk wang — jangan sekali-kali FLOAT/DOUBLE, yang membundarkan dalam perduaan dan kehilangan sen.VARCHAR(n) untuk teks bersempadan (nama, e-mel); n ialah had, storan hanya sebanyak yang anda gunakan.TEXT untuk blob besar (artikel) — ia disimpan di luar halaman (off-page) dan tidak boleh mempunyai default; jangan gunakannya untuk nilai pendek yang anda tapis.DATETIME (tiada zon waktu, 8 bait) berbanding TIMESTAMP (ditukar ke UTC, 4 bait, had ~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 untuk wang.VARCHAR(255) di mana-mana kerana tabiat — kunci bersaiz terlalu besar membengkakkan indeks.UNSIGNED pada id/kiraan yang tidak pernah negatif (menggandakan julat positif).Jenis data ialah keputusan ketepatan dan prestasi yang paling murah yang anda buat, dan yang paling sukar untuk diubah kemudian — jenis yang sempit dan tepat mengekalkan indeks kecil dan menghentikan data buruk di pintu sebelum ia menjadi pepijat produksi.
Pustaka soalan temu duga IT dengan jawapan terperinci — daripada Junior hingga Senior.
Derma