Mistake #6: defaulting every whole-number column to INT. SMALLINT stores signed whole numbers in two bytes, so it can reduce storage when values will remain within its range. section 3.1
Use the range deliberately:
- Choose it when growth is understood; exceeding its range can make an apparently efficient design operationally costly to change. section 3.1
- Savings compound across large fact tables, foreign keys, indexes, and concurrent queries. section 3.1
Check the bytes before choosing
SELECT DATALENGTH(CAST(1 AS SMALLINT)) AS SmallIntSize; returns 2. An Employees table can use SMALLINT for EmployeeID and nullable ManagerID when the expected employee count fits the range.


