Vous n'êtes pas identifié(e).
Pages : 1
Bonjour à tous,
y'a t-il un intérêt quelconque (performance) à déclarer des smallint ? ou le integer (int4) classique suffit-il ?
Cordialement
Hors ligne
la taille de stockage.
un smallint = 2 octets
un integer = 4 octets
un bigint = 8 octets
Hors ligne
Jusqu'ici, on est bien d'accord.
Ce que je me demande, c'est : si pour une valeur dont je sais qu'elle ne dépassera pas 199 par exemple, il est plus intéressant d'utiliser un smallint (2) ou un integer (4) fera aussi bien sans que ce soit la peine de s'enquiquiner ? Est ce que ça joue vraiment sur les performance ?
@+
Hors ligne
Je l'utilise plus par réflexe que par utilité : si je sais que la donnée à stocker n'a pas besoin de stocker de grande valeur.
A noter :
- il faut parfois caster explicitement dans certaines requêtes
- il semble que le gains en place disque soit dépendant des colonnes adjacentes à la colonne (http://postgresql.1045698.n5.nabble.com … 17850.html)
Hors ligne
Merci pour le lien, c'est beaucoup plus pointu que ne le laissait supposer ma question puisque même l'ordre des tables à une importance.
Au final, dans mon cas, le gain sera marginal.
Cordialement
Hors ligne
Il y a eu une discussion récente sur l'optimisation du stockage en choisissant de manière très détaillée la position des colonnes. Beaucoup de travail mais qui peut rapporter gros en espace disque.
Quant aux performances, je pense que dans le cas où vous faites de gros calculs ou de gros traitements sur ces colonnes, mieux vaut un int2 qu'un int4. Ça permet d'optimiser l'utilisation des processeurs, notamment au niveau de leur cache interne. De là à quantifier cela, il faudrait vraiment tester sur un cas métier.
Guillaume.
Hors ligne
Pages : 1