IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration Oracle Discussion :

Définition de la taille d'un champ NUMBER


Sujet :

Administration Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 750
    Par défaut Définition de la taille d'un champ NUMBER
    Bonjour,

    j'aurais souhaité savoir s'il était préférable d'un point de vu performance et espace disque de définir la taille d'un NUMBER d'une colonne (ex: NUMBER(5,2) au lieu de NUMBER).

  2. #2
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    je ne crois pas que ça fasse de différence... c'est juste une contrainte sur la colonne

  3. #3
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2006
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2006
    Messages : 142
    Par défaut
    Mais n'y a-t-il pas une taille par défaut pour NUMBER ? J'ai lu qq part que c'était 38, ce qui le cas échéant peut être préjudiciable en espace pour une table de plusieurs millions de lignes, par rapport à NUMBER(5,2) qui doit faire 5 octets.

  4. #4
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    C'est pas préjudiciable puisque ça ne prendra la place que de ce que tu y insères

  5. #5
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    select 
      cast(column_value as number(5,2)) "NUMBER(5,2)",
      vsize(cast(column_value as number(5,2))) "VSIZE(NUMBER(5,2))",
      cast(column_value as number) "NUMBER",
      vsize(cast(column_value as number)) "VSIZE(NUMBER)"
    from table(sys.odcinumberlist(1,1.2345))
    NUMBER(5,2) VSIZE(NUMBER(5,2))     NUMBER VSIZE(NUMBER)
    ----------- ------------------ ---------- -------------
              1                  2          1             2
           1.23                  3     1.2345             4
    Pour le même nombre, style "1", la taille physique sera la même quelque soit la taille logique (la contrainte) du nombre.

    Bien sûr avec number(5,2) on a moins de décimale, d'où la différence pour 1.2345...

  6. #6
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    Citation Envoyé par pat29 Voir le message
    rapport à NUMBER(5,2) qui doit faire 5 octets.
    number(5,2) aura une taille de 1 à 5 octets

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    select 
      vsize(cast(0 as number(5,2))),
      vsize(cast(-999.99 as number(5,2)))
    from dual
     
    VSIZE(CAST(0ASNUMBER(5,2))) VSIZE(CAST(-999.99ASNUMBER(5,2)))
    --------------------------- ---------------------------------
                              1                                 5

  7. #7
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    quant à number, c'est de 1 à 21 bits. Pour binary_float et binary_double, c'est toujours 4 et 8 bits

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    select 
      vsize(cast(0 as number)) "number",
      vsize(cast(-1e125/7 as number)) "number",
      vsize(cast(0 as binary_float)) "binary_float",
      vsize(cast(-1e125/7 as binary_float)) "binary_float",
      vsize(cast(0 as binary_double)) "binary_double",
      vsize(cast(-1e125/7 as binary_double))   "binary_double"
    from dual
     
        number   number_1 binary_float binary_float_1 binary_double binary_double_1
    ---------- ---------- ------------ -------------- ------------- ---------------
             1         21            4              4             8               8

  8. #8
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2006
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2006
    Messages : 142
    Par défaut
    Si le NUMBER fonctionne en gros comme un VARCHAR2, il doit donc stocker je présume la taille et la position du point ?
    Et saurais-tu pourquoi il stocke un chiffre par octet pour les NUMBER(compatibilités OS ?), alors que pour les float c'est stocké en binaire ?

Discussions similaires

  1. Modifier taille d'un champ
    Par jmjmjm dans le forum Outils
    Réponses: 8
    Dernier message: 25/11/2016, 10h24
  2. Taille maximum des champs courants
    Par sabbish dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 29/11/2013, 13h48
  3. Recuperer le type et la taille d'un champ
    Par bassim dans le forum Bases de données
    Réponses: 4
    Dernier message: 04/11/2005, 20h50
  4. Quelles définitions pour la taille d'une base
    Par Christophe Charron dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 15/09/2005, 07h59
  5. Modifier la taille d'un champ
    Par sbeu dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 23/03/2005, 16h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo