Les colonnes virtuelles en 11g

Nous avons vu précédemment la mise en place d'index de fonction ; la version 11g d'Oracle propose désormais de simplifier le travail en proposant la création de colonnes virtuelles.
Ainsi, si dans une table, pour un tuple donnée, une information peut être déduite d'autres colonnes et que cette information est suffisamment exploitée pour privilégier d'une persistence (stockage physique), la colonne virtuelle (virtual column) est une solution adaptée.

Soit la table personnel dont l'adresse mail sera toujours de la forme prenom.nom@domaine.fr :

create table personnel (
nom varchar2(80),
prenom varchar2(80),
mail_entreprise varchar2(200) generated always as (prenom || '.' || nom || '@domaine.fr') virtual);


Notons que les mots-clés generated always et virtual sont optionnaux (as suffit à déclarer une colonne virtuelle)

Cette colonne virtuelle peut alors être indexée :

create index idx_mail on personnel(mail_entreprise);


Cette nouvelle fonctionnalité permet au delà de cette facilité de mise en place, de l'associer à l'option de partitionnement ; de cette manière, il est possible de partitionner une table selon un critère virtuel :

create table t_virt_part (
col1 number,
col2 number,
vcol number as ma_fct(col1, col2)
)
PARTITION BY LIST (vcol)
partition part1 values(0),
partition part2 values(1),
partition part3 values(2),
partition part4 values(3),
partition part5 values(4),
partition part6 values(5)


où ma_fct peut être toute fonction (à partir du moment où elle est deterministic).

Voir aussi :
- Créer un index de fonction
- Les vues
- Pourquoi mon index n'est pas utilisé ?
- Les tables partitionnées




Vous n'avez pas trouver réponse à votre question ? Préciser votre recherche :

Catégories