SQL Server type de champ est meilleur pour le stockage de prix des valeurs?

Je me demande quel est le meilleur type pour un prix de terrain dans SQL Server pour un magasin comme la structure?

Regardant cette vue d'ensemble nous avons des types de données appelé de l'argent, smallmoney, puis nous avons décimal/numérique et enfin float et réel.

Nom, de la mémoire/disque-utilisation et plages de valeurs:

  • De l'argent: 8 octets (valeurs: -922,337,203,685,477.5808 à +922,337,203,685,477.5807)
  • Smallmoney: 4 octets (valeurs: -214,748.3648 à +214,748.3647)
  • Décimal: 9 [par défaut, min. 5] octets (valeurs: -10^38 +1 à 10^38 -1 )
  • Float: 8 octets (valeurs: -1.79 E+308 à 1,79 E+308 )
  • Réel: 4 octets (valeurs: -3.40 E+38 à 3,40 E+38 )

Est-il vraiment sage de prix du magasin valeurs de ces types? Que penser, par exemple. INT?

  • Int: 4 octets (valeurs: -2 147 483 648 à de 2 147 483 647)

Disons une boutique utilise des dollars, ils ont des cents, mais je ne vois pas de prix $49.2142342 donc l'utilisation d'un lot de décimales montrant cents semble déchets de SQL de la bande passante. Deuxièmement, la plupart des boutiques de ne pas afficher les prix de près de 200.000.000 (pas dans la normale web-boutiques à moins, à moins que quelqu'un essaye de me vendre une célèbre tour à Paris)

Alors pourquoi ne pas opter pour un int?

Un int est rapide, son seulement 4 octets, et vous pouvez facilement faire des décimales, par enregistrer les valeurs en cents au lieu de dollars et ensuite de diviser lorsque vous présentez les valeurs.

L'autre approche serait d'utiliser smallmoney qui est de 4 octets en trop, mais il faudra le calcul de la partie de la CPU pour faire le calc, où en tant que Int est la puissance entière... sur le revers de la médaille, vous aurez besoin de diviser chaque résultat.

Sont là toute la "monnaie" des problèmes liés aux paramètres régionaux lors de l'utilisation de smallmoney/de l'argent des champs? quels seront ces transfert de trop en C#/.NET ?

Les avantages/inconvénients? Aller pour l'entier de prix ou de smallmoney ou de quelques autres?

Quelle est votre expérience?

  • Merci à tous pour vos réponses! J'ai eu un sentiment que nous pourrions mettre fin à ces résultats. Donc, je suis greatfull que vous avez confirmé cela pour moi. Je pense que nous allons aller smallmoney pour commencer. Ses pas tellement sur le "espace de stockage" (le prix) mais merly la quantité ou de données transférées, plus et plus de disque à mémoire + chaque jointure et de la somme de 4 octets supplémentaires à gérer avec de l'argent plutôt que de petite de l'argent. Je vais donc voir que les réponses que je trouve le mieux et ensuite voter ceux-ci certains d'entre vous aussi! Merci les gens! Vraiment! Son appriciated!
  • L'arrondissement les problèmes causés par l'utilisation de l'argent ne devrait pas être ignoré. La réponse par @sqlvogel est très important.
InformationsquelleAutor BerggreenDK | 2010-06-03