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 ) |
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.
nom de l'index à créer.
nom de la table a indexer..
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 :
une implémentation des arborescence-B de haute concurrence de Lehman-Yao.
implémente les standards arborescence-R RTREE en utilisant l'algorithme de Guttman.
une implémentation du hachage linéaire de Litwin.
nom d'une colonne de la table
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 |
une fonction définie par l'utilisateur, qui retourne une valeur qui peut être indexée.
message retourné si l'index a été créé correctement.
Impossible de créer un index, le nom d'index existe déja.
CREATE INDEX construit un index index_name sur la table spécifiée.
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.
Pour créer un index btree sur le champ title dans la table films :
CREATE UNIQUE INDEX title_idx ON films (title); |