salut,
J'aurai aimé savoir est ce que oracle crée directement un index sur les clé primaire et les clé etrangere lorsque l'on créer une table ?
Et quelle type d'index il l'utilise ?
Merci
salut,
J'aurai aimé savoir est ce que oracle crée directement un index sur les clé primaire et les clé etrangere lorsque l'on créer une table ?
Et quelle type d'index il l'utilise ?
Merci
oui sur les clefs primaires uniquement (automatiquement).
il s'agit d'un index unique de type B-Tree.
+1.
En recherchant les objets de ton schéma, tu devrai trouver les index.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT object_name, object_type FROM user_object where object_type = 'INDEX';
Bonjour,
En complément d'info, et comme il a été dit, Oracle crée normalement un index unique, de type B-Tree, sur les clés primaires, mais aussi sur les contraintes d'unicité.
Je dis normalement, car si il existe déjà un index pouvant servir pour cette contrainte, l'index peut être réutilisé.
Par exemple, si on a une table avec 2 champs A et B qui sont indexés, et que l'on ajoute une contrainte de PK sur cette table, Oracle peut décider d'utiliser l'index pour cette contrainte, au lieu d'en créer un.
Voici un exemple :
Si vous regardez le résultat du SELECT, vous voyez que l'index IDX_ESSAI, qui n'est pourtant pas unique, sert pour cette constrainte.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 create table essai (a number not null, b number not null, c number) ; create index idx_essai on essai (a, b) ; alter table essai add (constraint pk_essai primary key (a)) ; select table_name, constraint_name, index_name from user_constraints where table_name = 'ESSAI' and constraint_type = 'P' ; TABLE_NAME CONSTRAINT_NAME INDEX_NAME ESSAI PK_ESSAI IDX_ESSAI
Dernière info à propos des Foreign Key : au contraire des contraintes de type PK et UNIQUE, celles-ci ne sont pas indexées. C'est à vous d'indexer les FK ou pas suivant votre besoin.
Merci de vos reponse ;il y a deux choses que je n'ai pas trop saisi
Le unique ?
et les index cluster ,?
Les cluster sa permet de regrouper les tables qui on des colonnes communes.
Bonjour,
Unique, c'est pour dire qu'un champ (ou plusieurs) d'une table contient une valeur unique.
Une contrainte d'unicité crée donc un index unique.
NB : en fait, une clé primaire, c'est tout simplement un (ou plusieurs champs) non nul et unique.
Dans l'exemple suivant, je t'ai fait 4 cas de figure :
NUM1 a une contrainte de PK, donc ce champ est obligatoire et unique, et il y a un index unique de créer (PK_ESSAI),
NUM 2 a une contrainte d'unicité, donc le champ est unique, mais pas obligatoire. Il y a aussi un index unique de créer (UNIQUE_ESSAI),
NUM3 a un index non unique (donc les valeurs de NUM3 ne sont pas forcément être uniques),
NUM4 a un index unique, donc les valeurs sont uniques.
Pour finir, quelle est la différence entre créer une contrainte d'unicité, et créer un index unique ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 create table essai (num1 number, num2 number, num3 number, num4 number, constraint PK_ESSAI primary key (num1), constraint UNIQUE_ESSAI unique (num2)) ; create index idx_essai_non_unique on essai (num3) ; create unique index idx_essai_unique on essai (num4) ; select index_name, uniqueness from user_indexes where table_name = 'ESSAI' ; INDEX_NAME UNIQUENESS IDX_ESSAI_NON_UNIQUE NONUNIQUE IDX_ESSAI_UNIQUE UNIQUE PK_ESSAI UNIQUE UNIQUE_ESSAI UNIQUE
C'est que l'index peut être détruit (drop index IDX_ESSAI_UNIQUE) sans pb, ou désactiver.
Alors que, avec une contrainte, il est impossible de détruire l'index tant que la contrainte existe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 drop index UNIQUE_ESSAI ; ORA-02429: impossible abandonner index utilisé pour utilisation de clé primaire/unique
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