För MySQL 5.1 (och högre) delar den upp lagringen för heltalsdelen och bråkdelen och ger plats för lagring för det största möjliga antalet. Så för en DECIMAL(12,6) behöver du 3 byte för heltalsdelen och 3 byte för bråkdelen. Det ser inte ut som att det minskar lagringen baserat på värdet; det lägger minnet åt sidan oavsett vad värdet är.
Du kan kolla in dokumentationen här: