நீங்கள் எப்போதேனும் சேமிக்கப்போகும் ஒவ்வொரு மதிப்பையும் சரியாக வைத்திருக்கும் மிகச் சிறிய type-ஐ தேர்ந்தெடுங்கள். சரியான type ஆனது disk-ஐ சேமிக்கிறது, indexes-ஐ சுருக்குகிறது, மேலும் அமைதியான data corruption-ஐ தடுக்கிறது.
நீங்கள் எப்போதேனும் சேமிக்கப்போகும் ஒவ்வொரு மதிப்பையும் சரியாக வைத்திருக்கும் மிகச் சிறிய type-ஐ தேர்ந்தெடுங்கள். சரியான type ஆனது disk-ஐ சேமிக்கிறது, indexes-ஐ சுருக்குகிறது, மேலும் அமைதியான data corruption-ஐ தடுக்கிறது.
INT (4 bytes); நீங்கள் உண்மையாகவே ~2.1 பில்லியனைத் தாண்டும்போது மட்டுமே BIGINT (8 bytes).DECIMAL(10,2) — ஒருபோதும் FLOAT/DOUBLE அல்ல, அவை binary-இல் round செய்து cents-ஐ இழக்கின்றன.VARCHAR(n); n என்பது ஒரு உச்சவரம்பு, சேமிப்பு நீங்கள் பயன்படுத்துவது மட்டுமே.TEXT — இது off-page-இல் சேமிக்கப்படுகிறது மற்றும் default வைத்திருக்க முடியாது; நீங்கள் filter செய்யும் சிறிய மதிப்புகளுக்கு இதைப் பயன்படுத்த வேண்டாம்.DATETIME (timezone இல்லை, 8 bytes) எதிராக TIMESTAMP (UTC-ஆக மாற்றப்பட்டது, 4 bytes, ~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 பயன்படுத்துவது.VARCHAR(255) — அளவுக்கு அதிகமான keys indexes-ஐ வீங்கச் செய்கின்றன.UNSIGNED-ஐ மறப்பது (நேர்மறை வரம்பை இரட்டிப்பாக்குகிறது).Data types என்பது நீங்கள் எடுக்கும் மிக மலிவான correctness மற்றும் performance முடிவாகும், மேலும் பின்னர் மாற்றுவதற்கு மிகக் கடினமானதாகும் — குறுகிய, துல்லியமான types ஆனது indexes-ஐ சிறியதாக வைத்திருந்து, தவறான data ஆனது production bug ஆகும் முன்பே அதை வாசலிலேயே நிறுத்துகிறது.
விரிவான பதில்களுடன் கூடிய IT நேர்காணல் கேள்விகளின் நூலகம் — Junior முதல் Senior வரை.
நன்கொடை