View a markdown version of this page

CREATE INDEX - Amazon Aurora DSQL

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

CREATE INDEX

CREATE INDEXdéfinit un nouvel index. Dans Aurora DSQL, la création d'index est toujours asynchrone. Vous devez donc spécifier le mot clé. ASYNC Pour plus d'informations sur la façon dont Aurora DSQL exécute des compilations d'index asynchrones et sur la manière de les surveiller, consultez. Index asynchrones dans Aurora DSQL

Syntaxe prise en charge

CREATE [ UNIQUE ] INDEX ASYNC [ [ IF NOT EXISTS ] name ] ON table_name ( { column_name | ( expression ) } [ NULLS { FIRST | LAST } ] [, ...] ) [ INCLUDE ( column_name [, ...] ) ] [ NULLS [ NOT ] DISTINCT ]

Description

CREATE INDEXconstruit un index sur les colonnes spécifiées de la table spécifiée. Les index sont principalement utilisés pour améliorer les performances des bases de données, mais une utilisation inappropriée peut entraîner un ralentissement des performances.

Vous spécifiez les champs clés de l'index sous forme de noms de colonne ou d'expressions écrites entre parenthèses. Vous pouvez spécifier plusieurs champs pour créer un index multicolonne.

Un champ d'index peut être une expression calculée à partir des valeurs d'une ou de plusieurs colonnes de la ligne du tableau. Utilisez cette fonctionnalité pour obtenir un accès rapide aux données sur la base d'une transformation des données de base. Par exemple, un index calculé upper(col) permet à la clause WHERE upper(col) = 'JIM' d'utiliser un index.

Toutes les fonctions et tous les opérateurs utilisés dans une définition d'index doivent être immuables. En d'autres termes, leurs résultats doivent dépendre uniquement de leurs arguments et jamais d'une influence extérieure, telle que le contenu d'un autre tableau ou l'heure actuelle. Cette restriction garantit que le comportement de l'indice est bien défini. Pour utiliser une fonction définie par l'utilisateur dans une expression d'index, n'oubliez pas de cocher la fonction IMMUTABLE lorsque vous la créez.

Parameters

UNIQUE

Demande au système de vérifier la présence de valeurs dupliquées dans la table lors de la création de l'index, si des données existent déjà et à chaque fois que vous ajoutez des données. Les tentatives d'insertion ou de mise à jour de données qui entraîneraient des entrées dupliquées génèrent une erreur.

IF NOT EXISTS

Ne lancez pas d'erreur s'il existe déjà une relation portant le même nom. Un avis est émis dans ce cas. Notez que rien ne garantit que l'index existant ressemble à celui qui aurait été créé. Le nom de l'index est obligatoire lorsqu'il IF NOT EXISTS est spécifié.

INCLUDE

La INCLUDE clause facultative spécifie une liste de colonnes à inclure dans l'index en tant que colonnes non clés. Vous ne pouvez pas utiliser une colonne non clé dans une qualification de recherche par analyse d'index, et Aurora DSQL ne la prend pas en compte à des fins de contrainte d'unicité ou d'exclusion appliquée par l'index. Cependant, une analyse d'index uniquement peut renvoyer le contenu de colonnes non clés sans avoir à consulter la table de l'index, car elles sont disponibles directement depuis l'entrée de l'index. L'ajout de colonnes non clés permet donc de scanner uniquement les requêtes qui ne pourraient pas être utilisées autrement.

Les expressions ne sont pas prises en charge en tant que colonnes incluses, car elles ne peuvent pas être utilisées dans les analyses d'index uniquement.

name

Le nom de l'index à créer. Vous ne pouvez pas inclure de nom de schéma ici. Aurora DSQL crée toujours l'index dans le même schéma que sa table parent. Le nom de l'index doit être distinct du nom de toute autre relation, telle qu'une table, une séquence, un index ou une vue, dans ce schéma. Si vous omettez le nom, Aurora DSQL choisit un nom approprié en fonction du nom de la table parent et des noms des colonnes indexées.

table_name

Le nom, éventuellement qualifié de schéma, de la table à indexer.

column_name

Le nom d'une colonne de la table.

expression

Expression basée sur une ou plusieurs colonnes du tableau. Vous devez généralement écrire l'expression avec des parenthèses, comme indiqué dans la syntaxe. Vous pouvez toutefois omettre les parenthèses si l'expression a la forme d'un appel de fonction.

NULLS FIRST

Spécifie que les valeurs nulles sont triées avant les valeurs non nulles.

NULLS LAST

Spécifie que les valeurs nulles sont triées après les valeurs non nulles.

NULLS DISTINCT
NULLS NOT DISTINCT

Spécifie si les valeurs nulles sont considérées comme distinctes, c'est-à-dire non égales, pour un index unique. Par défaut, ils sont distincts, de sorte qu'un index unique peut contenir plusieurs valeurs nulles dans une colonne.

Exemples

Pour créer un index unique sur la colonne title du tableaufilms.

CREATE UNIQUE INDEX ASYNC title_idx ON films (title);

Créer un index unique sur la colonne title avec les colonnes incluses director et rating dans le tableaufilms.

CREATE UNIQUE INDEX ASYNC title_idx ON films (title) INCLUDE (director, rating);

Créer un index sur l'expressionlower(title), ce qui permet d'effectuer des recherches efficaces sans distinction majuscules/minuscules.

CREATE INDEX ASYNC ON films ((lower(title)));

Cet exemple omet le nom de l'index. Aurora DSQL choisit donc généralement un nom. films_lower_idx

Pour créer un index dont l'ordre de tri des valeurs nulles n'est pas celui par défaut.

CREATE INDEX ASYNC title_idx_nulls_low ON films (title NULLS FIRST);