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

Oracle Discussion :

[TUNING]calculs de champs


Sujet :

Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juin 2002
    Messages : 66
    Points : 57
    Points
    57
    Par défaut [TUNING]calculs de champs
    Bonjour,
    je viens de chercher dans les FAQ et chez Oracle mais j'ai pas trouvé le moyen de calculer la taille occupé par un champs en fonction du type
    par exemple combien prend un char(25) , les integer, floats etc .... en mémoire sur le disque dur.

    Sinon pendant que j'y suis, j'ai une seconde question, est-ce grevant lors de jointures, que les champs à joindre soient défini en CHAR ?
    pour l'exemple, j'ai une table de codes de pays et c'est un CHAR(12) mais les codes pays sont sur 2 caracteres et cette colonnes est appelée un peu partout

    Merci d'avance

    Alex

  2. #2
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Pour la taille des variables, voir la fonction VSIZE()
    http://sheikyerbouti.developpez.com/...age=Chap3#L3.3

    Gardez à l'esprit que le type VARCHAR2() ne prend que la place réellement occupée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    SQL> set serveroutput on
    SQL> DECLARE
      2    LC$Var VARCHAR2(1000) := '2' ;
      3    LN$Taille PLS_INTEGER ;
      4  BEGIN  
      5    SELECT VSIZE( LC$Var ) INTO LN$Taille FROM dual ;
      6    dbms_output.put_line('Taille = ' || LN$Taille ) ;
      7  END ;
      8  
      9  /
    Taille = 1
     
    Procédure PL/SQL terminée avec succès.
     
    SQL>
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juin 2002
    Messages : 66
    Points : 57
    Points
    57
    Par défaut
    Citation Envoyé par SheikYerbouti
    Pour la taille des variables, voir la fonction VSIZE()
    http://sheikyerbouti.developpez.com/...age=Chap3#L3.3

    Gardez à l'esprit que le type VARCHAR2() ne prend que la place réellement occupée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    SQL> set serveroutput on
    SQL> DECLARE
      2    LC$Var VARCHAR2(1000) := '2' ;
      3    LN$Taille PLS_INTEGER ;
      4  BEGIN  
      5    SELECT VSIZE( LC$Var ) INTO LN$Taille FROM dual ;
      6    dbms_output.put_line('Taille = ' || LN$Taille ) ;
      7  END ;
      8  
      9  /
    Taille = 1
     
    Procédure PL/SQL terminée avec succès.
     
    SQL>
    merci c'est ce que je cherchais, nous avons (entre autre) des FLOAT(126) de déclaré sur certains champs et ça me parait assez énorme par rapport aux données réellement stockées
    Et pour les char, je suis en train de faire des statistiques sur les tables les plus importantes pour les passer en varchar (j'en suis à 76% d'espace perdu....)

    Merci

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juin 2002
    Messages : 66
    Points : 57
    Points
    57
    Par défaut
    juste une derniere chose et pour l'histoire des jointures ?

    J'ai des jointures sur des champs définit en CHAR ?
    Comment se comporte oracle ?
    est-ce moins performant qu'avec des ID numériques ?
    la différences de performance peut elle vraiment se ressentir ?

    Je suis preneur de toute doc technique sur ce sujet et sur les optimisations Oracle

    merci encore

  5. #5
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    je ne pense pas qu'il y ait une réelle différence de performances (Numérique/caractère) avec un recherche dans un arbre B-TREE
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juin 2002
    Messages : 66
    Points : 57
    Points
    57
    Par défaut
    ok merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Tableaux] Calcul de champ ?
    Par Sparkle dans le forum Langage
    Réponses: 3
    Dernier message: 17/08/2006, 22h13
  2. [DEBUTANT] Probelme pour calculer 2 champs dans un etat
    Par The_freeman dans le forum Access
    Réponses: 1
    Dernier message: 18/06/2006, 18h12
  3. Réponses: 4
    Dernier message: 15/06/2006, 16h42
  4. [Access 2002] Calcul de champ dans un formulaire !
    Par Amanck dans le forum Access
    Réponses: 6
    Dernier message: 29/05/2006, 15h22
  5. Requête calcul sur champs
    Par tikawua dans le forum Langage SQL
    Réponses: 6
    Dernier message: 12/10/2005, 15h26

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