Index unique Oracle

Index Unique Oracle



La performance de la base de données est l'un des rôles essentiels d'un développeur de base de données. S'assurer que votre base de données fonctionne à des performances optimales peut avoir un impact significatif sur les applications qui lisent ou écrivent dans cette base de données.

Bien qu'il existe de nombreuses façons d'améliorer les performances de la base de données, une fonctionnalité est presque universelle pour toute base de données. Les index de base de données sont des structures de données ou des objets qui sont utilisés pour améliorer la vitesse de récupération des données de la table.

Lorsqu'ils sont utilisés correctement, les index de base de données peuvent réduire de près de moitié la vitesse d'une requête, en fonction des données cibles, de la disposition, des ressources disponibles, etc.







Dans ce didacticiel, vous allez apprendre à utiliser des index uniques dans les bases de données Oracle pour empêcher la disponibilité de valeurs en double dans une colonne indexée.



Index unique Oracle

Nous pouvons utiliser un index unique pour nous assurer qu'aucune ligne en double n'est stockée dans une colonne donnée. Si la colonne d'un index donné contient une règle unique, tenter d'ajouter deux lignes avec une valeur similaire dans cette colonne entraînera une erreur qui indique une violation de contrainte unique.



Dans Oracle, nous pouvons créer un index unique à l'aide de l'instruction CREATE UNIQUE INDEX, comme illustré ci-dessous :





CREATE UNIQUE INDEX nom_index ON nom_table ( Colonnes ) ;

Les colonnes incluses dans l'index n'accepteront aucune ligne en double.

Exemple d'illustration de table unique

Pour montrer comment créer et utiliser un index unique, prenez le tableau suivant :



SÉLECTIONNER * FROM échantillon_données ;

Production :

Créer un index unique sur la colonne First_Name

L'exemple d'instruction suivant montre comment créer un index unique à l'aide de la colonne first_name :

créer un index unique first_name_unique sur sample_data ( prénom ) ;

En activant cet index, nous ne pouvons pas insérer plus d'une ligne avec le même prénom.

Prenons par exemple l'instruction d'insertion suivante :

insérer dans sample_data ( identifiant , prénom, adresse_ip, adresse_btc, carte_de_crédit, identifiant )
valeurs ( Onze , 'Wallas' , '169.158.70.77' , '1CNz5d1d5SC8SaR6dFSVihwztqYx5Fg77q' , '4017955174552' ,
'26811d77-0a3a-4397-bc33-f7835f7c7ab9' ) ;

Si nous exécutons l'instruction d'insertion donnée, nous devrions obtenir une erreur comme indiqué ci-dessous :

[ 23000 ] [ 1 ] ORA-00001 : contrainte d'unicité ( HR.FIRST_NAME_UNIQUE ) violé

Comme nous pouvons le voir, l'insertion de la valeur donnée viole la contrainte unique pour la colonne first_name.

Créer un index unique avec deux colonnes

Nous pouvons également avoir un index unique composé de plusieurs colonnes. Dans l'exemple suivant, nous créons un index unique à l'aide des colonnes first_name et io_address :

créer un index unique verify_columns sur sample_data ( prénom, adresse_ip ) ;

De même, l'ajout de valeurs en double pour la colonne first_name ou ip_address entraînera des erreurs de violation d'index unique.

Index uniques automatiques

Vous êtes-vous déjà demandé ce qui se passe lorsque vous déclarez une colonne de table avec une clé primaire ou une contrainte unique ?

En termes simples, si vous définissez une colonne comme clé primaire de la table ou affectez une contrainte unique à une colonne donnée, le moteur de base de données crée automatiquement un index unique pour cette colonne.

Cela garantit qu'aucune valeur en double n'est insérée dans cette colonne.

Prenons par exemple l'énoncé suivant :

créer une table sample_data
(
identifiant Numéro,
prénom varchar2 ( cinquante ) ,
adresse_ip varchar2 ( vingt ) ,
btc_address varchar2 ( cinquante ) ,
credit_card varchar2 ( cinquante ) ,
identifiant varchar2 ( 40 ) ,
contrainte sample_pk clé primaire ( identifiant )
) ;

Dans l'exemple précédent, nous créons une table et définissons la colonne id comme clé primaire de la table. Ensuite, pour afficher la contrainte unique associée à cette colonne (générée automatiquement), nous pouvons exécuter la commande suivante :

sélectionner nom_index, type_index, visibilité, état, TABLE_NAME
à partir de all_indexes où TABLE_NAME = 'SAMPLE_DATA' ;

Résultats :
Dans ce cas, nous pouvons voir l'index unique créé par le moteur de base de données pour la colonne id.

Conclusion

Dans ce guide, vous avez appris à créer et à utiliser les index uniques dans la base de données Oracle. Vous avez également appris ce qui se passe lorsque vous affectez une clé primaire ou une contrainte unique à une colonne de table.