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

SQL Oracle Discussion :

intérêt des colonnes virtuelles en 11G


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 114
    Points : 67
    Points
    67
    Par défaut intérêt des colonnes virtuelles en 11G
    Bonjour,

    Est ce que qqn pourrait me dire dans quels cas utiliser judicieusement les colonnes virtuelles d'une table en 11G?

    Merci par avance
    couse1

  2. #2
    Membre confirmé
    Avatar de argoet
    Inscrit en
    Mai 2002
    Messages
    582
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 582
    Points : 562
    Points
    562
    Par défaut
    Une colonne virtuelle est définie comme une expression portant sur d'autres colonnes de la table. La donnée n'est donc pas stockée, elle est réévaluée à chaque fois.
    Son intéret est surtout lié à son utilisation dans le partitionnement d'une table .

    http://www.aide-oracle.net/2009/04/l...es-en-11g.html
    Signé : Capitaine Jean-Luc Picard

  3. #3
    Membre habitué
    Inscrit en
    Mai 2010
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 107
    Points : 132
    Points
    132
    Par défaut
    Hello,

    Je ne suis pas tout à fait d'accord avec argoet... L'intérêt des colonnes virtuelles n'est pas de permettre de partitionner une table, c'est une sorte d'effet de bord, mais un effet de bord positif (le calcul de la clé de partionnement peut se trouver dans la définition de la table )

    L'intérêt des colonnes virtuelles est bien d'avoir des colonnes calculées, dérivées. Des exemples pratiques où les colonnes virtuelles peuvent apporter un plus:
    - Une conversion de devise (Euro vers Franc Belges, Francs Français, etc.)
    - Une conversion d'unités (mètres vers des pieds/pouces, pascal en atmosphère, litres vers gallons...)
    - Calculer un prix après Rabais, remises, ristourne
    - ...

    Un exemple que j'ai dernièrement mis en pratique. J'ai dans une application deux colonnes Nom, Prénom... Une colonne virtuelle (NOM+PRENOM) a été dérivée sur base de ces deux colonnes. Dans la colonnes virtuelles, seul les caractères de A à Z sont gardés. Pas de numérique, pas d'accent, pas de tréma, pas de tiret:
    - Albert 2 de Belgique devient ALBERT-DEBELGIQUE
    - Jean-José Sañû devient JEANJOSE-SANU

    Ainsi, c'est ainsi que les exigences applicatives ont été écrits pour pouvoir rechercher une personne. Désormais, plus besoin de trigger pour garder cette colonnes à jour.

    Par contre, il faut bien garder en tête que seule les fonctions 'DETERMINISTIC' peuvent être appelée dans la définition de la colonne virtuelle... Une fonction déterministique est (pour faire simple) une fonction ne dépendant pas d'un facteur variable.

    Pour illustrer les fonction deterministic, prenons rapidement deux petits exemples:

    La fonction UPPER renvoi la chaine de caractère qui lui est passé en MAJUSCULES. Cette fonction renverra toujours la même chaine en majuscule si on lui passe Hello (elle renverra toujours HELLO).

    Par contre, immaginons une fonction CALCULER_AGE(date_naissance). On passe en paramètre une date de naissance et notre fonction calculer age renverrait un nombre (l'age). Cette fonction, pour pouvoir faire son travail a besoin d'un élément variable, à savoir l'heure actuelle. Comment pouvoir calculer l'age d'une personne sans connaitre la date du jour??

    C'est une des limitations des colonnes virtuelles... Par contre dire que les colonnes virtuelles n'ont d'intérêt que dans le partitionnement d'une table, je ne suis pas tout à fait d'accord

    A+

  4. #4
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 821
    Points : 6 443
    Points
    6 443
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Si tu connais les Function Based Indexes, qui permettent d'indexer une colonne calculée, alors c'est le même principe. Mais l'inconvénient est que chaque requête doit utiliser la même formule pour que l'index soit utilisé. On peut avoir une vue pour factoriser cela. Mais les colonnes virtuelles sont plus évidentes.

    Un autre gros avantage: les statistiques sont calculées pour les colonnes virtuelles. Un exemple: http://jonathanlewis.wordpress.com/2...dinalilty-one/

    Cordialement,
    Franck.
    Franck Pachot - Developer Advocate Yugabyte 🚀 Base de Données distribuée, open source, compatible PostgreSQL
    🗣 twitter: @FranckPachot - 📝 blog: blog.pachot.net - 🎧 podcast en français : https://anchor.fm/franckpachot

  5. #5
    Membre confirmé
    Avatar de argoet
    Inscrit en
    Mai 2002
    Messages
    582
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 582
    Points : 562
    Points
    562
    Par défaut
    OracleFan : je suis OK avec votre propos
    Cependant
    Citation Envoyé par OracleFan Voir le message
    Par contre dire que les colonnes virtuelles n'ont d'intérêt que dans le partitionnement d'une table, je ne suis pas tout à fait d'accord
    A+
    Relisez moi .....
    Citation Envoyé par argoet
    Son intérêt est surtout lié à son utilisation dans le partitionnement d'une table
    il n'y a ici , aucune exclusivité dans cette affirmation

    Cordialement
    @Argoet
    Signé : Capitaine Jean-Luc Picard

  6. #6
    Membre habitué
    Inscrit en
    Mai 2010
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 107
    Points : 132
    Points
    132
    Par défaut
    Lu trop vite argoet
    Désolé.

Discussions similaires

  1. Réponses: 15
    Dernier message: 22/07/2005, 09h49
  2. Quel est l'intérêt des Services Web ??
    Par silvermoon dans le forum Débats sur le développement - Le Best Of
    Réponses: 19
    Dernier message: 12/02/2003, 22h28
  3. [VB6] Datagrid afficher ou cacher des colonnes par code
    Par soazig dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 06/02/2003, 17h19
  4. Dimensions des colonnes d'un TDBGrid
    Par osmose22 dans le forum C++Builder
    Réponses: 4
    Dernier message: 11/12/2002, 11h27
  5. [Technique] Intérêt des index
    Par ddams dans le forum Décisions SGBD
    Réponses: 10
    Dernier message: 04/11/2002, 15h11

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