Type Money : l’argent ne fait pas le bonheur

Au cours des différentes interventions que je suis amenées à faire en tant que consultant, il m’arrive de jeter un œil sur le design de la base de donnée. Histoire de contrôler que les types de données sont bien choisis (pourquoi utiliser un type integer sur 4 octets alors que la valeur maximale ne dépasse pas 10 … et où 1 seul octet aurait suffi). Ok, cela ne fait pas tout, mais reporté sur quelques millions d’enregistrements, sur plusieurs champs, dans plusieurs tables, les performances globales peuvent en souffrir. Et si ce fameux champ est indexé (clé étrangère par exemple), vous détériorez fortement les performances de votre index car au lieu de placer 8060 valeurs (au maximum on oublie la notion de fill factor et de pad_index pour une fois) de 1 octet, vous n’avez plus que 2015 enregistrements dans vos pages de données. Donc des lectures disques supplémentaires pour de simples recherches.

Bref, le choix des types de données est crucial.

Au-delà de ces considérations, il m’arrive de rencontrer le type Money. Autant vous dire que je ne suis pas fan du tout :

image

Hum hum, on dirait que l’on est tronqué à 4 chiffres après la virgule … Ce que nous confirme la doc en ligne :

image

En décimal, nous avons :

image

Quel est l’effet de bord de cette troncature ? Démo :

image

Oups la boulette, 500 ne serait pas égal à 500 ???? On m’aurait menti ? Vérification :

image

Ouf, l’univers de la finance aurait pu voler en éclat avec une telle démonstration et l’économie mondiale s’effondrer… A moins que ce soit déjà fait depuis 1 an …🙂

L’argent ne fait pas le bonheur, c’est bien connu, le type money pourrait faire votre malheur suivant ce que vous lui demandez ! Réfléchissez bien avant de l’utiliser et en cas de doutes, préférez lui un bon vieux type décimal …

A propos Christophe

Consultant SQL Server Formateur certifié Microsoft MVP SQL Server MCM SQL Server 2008
Cet article a été publié dans SQL Server. Ajoutez ce permalien à vos favoris.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s