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
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
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
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+
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
Lu trop vite argoet
Désolé.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager