FirebirdSQL logo

Un index est un objet de base de données utilisé pour récupérer plus rapidement les données d’une table ou pour accélérer le tri dans une requête.De plus, les index sont utilisés pour fournir des restrictions d’intégrité — PRIMARY KEY, FOREIGN KEY, UNIQUE.

Cette section décrit comment créer des index, les mettre à l’état actif/inactif, supprimer des index et collecter des statistiques (recalcul de la sélectivité) pour les index.

CREATE INDEX

Objectif

Pour créer un index pour une table.

Disponible en

DSQL, ESQL.

CREATE [UNIQUE] [ASC[ENDING] | DESC[ENDING]]
INDEX indexname ON tablename
{(<column_list>) | COMPUTED [BY] (<value_expression>)}
[WHERE <search_condition>]

<column_list> ::= col [, col ...]
Table 1. Paramètres de la commande CREATE INDEX.
Paramètre Description

indexname

Nom de l’index.Peut contenir jusqu’à 63 caractères.

tablename

Le nom de la table pour laquelle l’index est construit.

col

Colonne de la table.Les champs BLOB, ARRAY et calculés ne peuvent pas être utilisés comme colonnes.

value_expression

Une expression contenant les colonnes du tableau. Les valeurs de cette expression seront les clés de l’index.

search_condition

Une condition de recherche contenant les colonnes de la table. Utilisée pour définir un sous-ensemble d’enregistrements de la table à indexer.

L’instruction CREATE INDEX crée un index pour la table, qui peut être utilisé pour accélérer la recherche, le tri et/ou le regroupement.L’index peut également être utilisé lors de la définition de contraintes telles que les contraintes de clé primaire, de clé étrangère ou d’unicité.Un index peut être construit sur des colonnes de tout type autre que BLOB et les tableaux.Le nom de l’index doit être unique parmi tous les noms d’index.

Note
Indices dans les clés

L’ajout d’une contrainte de clé primaire, d’une contrainte de clé étrangère ou d’une contrainte d’unicité créera implicitement un index du même nom.Par exemple, l’instruction suivante créera implicitement un index PK_COUNTRY.

ALTER TABLE COUNTRY
ADD CONSTRAINT PK_COUNTRY PRIMARY KEY (ID);

Indices uniques

Si le mot-clé UNIQUE est spécifié lors de la création de l’index, celui-ci garantit l’unicité des valeurs des clés.Un tel indice est appelé indice unique.Un indice unique n’est pas une restriction de l’unicité.

Les index uniques ne peuvent pas contenir de valeurs de clés dupliquées (ou de combinaisons de valeurs de clés dupliquées dans le cas d’un index composite, multi-colonnes ou multi-segments). Les valeurs NULL dupliquées sont autorisées selon la norme SQL-99, également dans les index multisegments.

Direction de l’indice

Tous les index dans Firebird sont unidirectionnels.Un index peut être construit dans l’ordre croissant et décroissant.Les mots-clés ASC[ENDING] (abrégé en ASC) et DESC[ENDING] sont utilisés pour indiquer la direction de l’index.Par défaut, un index ascendant ASC[ENDING] est créé.Il est acceptable de définir un index ascendant et descendant sur la même colonne ou le même jeu de clés en même temps.

Tip

Un index décroissant (DESC[ENDING]) peut être utile pour rechercher les valeurs les plus élevées (maximum, dernier, etc.).