Pour MySQL 5.1 (et supérieur), il divise le stockage pour la partie entière et la partie fractionnaire, et fait de la place pour le stockage du plus grand nombre possible. Ainsi, pour un DECIMAL(12,6), vous avez besoin de 3 octets pour la partie entière et de 3 octets pour la partie fractionnaire. Il ne semble pas que cela diminue le stockage en fonction de la valeur ; il met la mémoire de côté quelle que soit la valeur.
Vous pouvez consulter la documentation ici :