Oracle > index
Un
index sur une table permet d'effectuer plus rapidement des recherches. C'est comme chercher le numéro de téléphone (valeur) d'une personne dans l'annuaire en feuilletant toutes les pages (sans
index) plutôt que d'utiliser une recherche par Ville puis par Nom (par index).
Sans index :
- parcours séquentiel
- parcours par dichotomie si les valeurs sont triées
Avec index :
- Utilisation de l'index -> accès direct à l'enregistrement voulu
- les mises à jours coûtent cher, car il faut reconstruire l'index pour qu'il soit utilisable
Par défaut, oracle crée un index secondaire sur la clé primaire des tables.
CREATE [UNIQUE|BITMAP] INDEX monindex
ON matable (colonne[,colonne...])
Lors de la création d'une table, on précise qu'elle est indexée.
CREATE TABLE matable (attribut TYPE, ...)
ORGANIZATION INDEX
La table est stockée dans un B-arbre.
Le
cluster est une organisation physique des données qui consiste à regrouper physiquement (dans un même bloc disque) les lignes d'une ou plusieurs tables ayant une caractéristique commune, comme une même valeur dans une ou plusieurs colonnes constituant la clé du cluster.
Cela permet de rapprocher des tables en vue de requêtes de jointure entre elles.
CLUSTER PAR HASHAGE : hashe les données pour donner une valeur indiquant où stocker ces données.
CREATE CLUSTER moncluster (colonne TYPE, ...)
HASHKEYS 20
CLUSTER INDEXE : la clé du cluster est indexée à l'aide d'un index de cluster, les valeurs sont stockées une seule fois pour toutes les tables du cluster.
--on crée le cluster
CREATE CLUSTER moncluster (colonne TYPE, ...)
--on ajoute l'index
CREATE INDEX monindex
ON CLUSTER moncluster
--on crée les tables en indiquant le cluster dans lequel elles se trouvent
CREATE TABLE matable (colonne TYPE,...)
CLUSTER moncluster (colonne)