CREATE INDEX

Nom

CREATE INDEX — construit un index secondaire.
CREATE [ UNIQUE ] INDEX index_name
    ON table [ USING acc_name ]
    ( column [ ops_name] [, ...] )
CREATE [ UNIQUE ] INDEX index_name
    ON table [ USING acc_name ]
    ( func_name( r">colle> [, ... ]) ops_name )
  

Entrées

UNIQUE

Force le système a vérifier les valeurs dupliquées dans une table lorsque l'index est créé (si des données sont déja présentes) et à chaque fois qu'une donnée est ajoutée. La tentative d'insérer ou de mettre à jour des données non-dupliquées générera une erreur.

index_name

nom de l'index à créer.

table

nom de la table a indexer..

acc_name

nom de la méthode d'accès qu doit être utilisée pour l'index. La méthode par défaut est l'arborescence-B BTREE. Postgres fournit trois méthodes d'accès pour les index secondaires :

BTREE

une implémentation des arborescence-B de haute concurrence de Lehman-Yao.

RTREE

implémente les standards arborescence-R RTREE en utilisant l'algorithme de Guttman.

HASH

une implémentation du hachage linéaire de Litwin.

column

nom d'une colonne de la table

ops_name

Une classe opérateur associée. La liste suivante retourne tous les ops_name :
SELECT am.amname AS acc_name,
       opc.opcname AS ops_name,
       opr.oprname AS ops_comp
    FROM pg_am am, pg_amop amop,
         pg_opclass opc, pg_operator opr
    WHERE amop.amopid = am.oid AND
          amop.amopclaid = opc.oid AND
          amop.amopopr = opr.oid
    ORDER BY acc_name, ops_name, ops_comp
	

func_name

une fonction définie par l'utilisateur, qui retourne une valeur qui peut être indexée.

Sorties

CREATE

message retourné si l'index a été créé correctement.

ERROR: Cannot create index: 'index_name' already exists.

Impossible de créer un index, le nom d'index existe déja.

Description

CREATE INDEX construit un index index_name sur la table spécifiée.

Tuyau

les index sont créés d'abord pour améliorer les performances de la base. Mais un usage inapproprié peut en ralentir les performances.

Dans la première syntaxe ci-dessus, les champs clé pour l'index sont spécifiés comme noms de colonne ; une colonne peut aussi avoir une classe opérateur associée. Une classe opérateur est utilisée pour spécifier les opérateurs nécessaires pour un index particulier. Par exemple, un index btree sur des entiers en 4 octets utilisera la classe int4_ops ; cette classe opérateur inclut des fonctions de comparaison pour les entiers en quatre octets. La classe opérateur par défaut est la classe opérateur appropriée pour chaque type de champ.

Dans la seconde syntaxe, un index est défini sur le résultat d'une fonction utilisateur func_name appliqué à un ou plusieurs attributs d'une classe seule. Ces index additionnels peuvent être utilisés pour obtenir des accès plus rapides aux données basées sur les opérateurs qui nécessitent normalement certaines transformations pour s'appliquer aux données de la base.

Notes

De façon courante, seule la méthode d'accès BTREE supporte les index multi-colonnes. Plus de 7 clés peuvent être spécifiées.

Utilisez DROP INDEX pour supprimer un index.

Utilisation

Pour créer un index btree sur le champ title dans la table films :

CREATE UNIQUE INDEX title_idx
    ON films (title);
  

Compatibilité

SQL92

CREATE INDEX est une extension du langage Postgres.

Il n'existe pas de commande CREATE INDEX en SQL92.