FirebirdSQL logo
 TABLEVIEW 

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.).

Indices calculés ou indices par expression

Lorsque vous créez un index au lieu d’une ou plusieurs colonnes, vous pouvez également spécifier une seule expression en utilisant la clause COMPUTED BY.Un tel index est appelé index calculé ou index basé sur les expressions.Les index calculés sont utilisés dans les requêtes dans lesquelles la condition dans les clauses WHERE, ORDER BY, ou GROUP BY est exactement la même que l’expression dans la définition de l’index.Une expression dans un index calculé peut utiliser plusieurs colonnes de la table.

Indices partiels

Si vous pouvez spécifier une clause optionnelle WHERE lors de la création d’un index qui spécifie une condition de recherche,qui restreint le sous-ensemble des entrées de la table à indexer. De tels index sont appelés index partiels.La condition de recherche doit contenir une ou plusieurs colonnes du tableau.

La définition d’un index partiel peut inclure la spécification UNIQUE. Dans ce cas, chaque clé de l’index doit être unique. Cela garantit l’unicité pour un sous-ensemble de lignes de la table.

Un index partiel ne peut être utilisé que dans les cas suivants :

  • La condition WHERE comprend exactement la même expression logique que celle définie pour l’index ;

  • La condition de recherche définie pour l’index contient des expressions logiques combinées par OR, et l’une d’entre elles est explicitement incluse dans la condition WHERE ;

  • La condition de recherche définie pour l’index spécifie IS NOT NULL, et la condition WHERE inclut une expression pour le même champ qui est connue pour ignorer NULL.