View a markdown version of this page

CREATE INDEX - Amazon Aurora DSQL

CREATE INDEX

CREATE INDEX define un nuevo índice. En Aurora DSQL, la creación de índices siempre es asíncrona, por lo que debe especificar la palabra clave ASYNC. Para obtener información sobre cómo Aurora DSQL ejecuta compilaciones de índices asíncronas y cómo supervisarlas, consulte Índices asíncronos en Aurora DSQL.

Sintaxis admitida

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

Descripción

CREATE INDEX crea un índice en las columnas especificadas de la tabla especificada. Los índices se utilizan principalmente para mejorar el rendimiento de la base de datos, aunque un uso inadecuado puede provocar un rendimiento más lento.

Los campos clave del índice se especifican como nombres de columnas o, alternativamente, como expresiones escritas entre paréntesis. Puede especificar varios campos para crear un índice multicolumna.

Un campo de índice puede ser una expresión calculada a partir de los valores de una o más columnas de la fila de la tabla. Utilice esta característica para obtener un acceso rápido a los datos basándose en alguna transformación de los datos básicos. Por ejemplo, un índice calculado sobre upper(col) permite que la cláusula WHERE upper(col) = 'JIM' utilice un índice.

Todas las funciones y operadores utilizados en una definición de índice deben ser inmutables. Es decir, sus resultados deben depender únicamente de sus argumentos y nunca de ninguna influencia externa, como el contenido de otra tabla o la hora actual. Esta restricción garantiza que el comportamiento del índice esté bien definido. Para utilizar una función definida por el usuario en una expresión de índice, recuerde marcar la función IMMUTABLE al crearla.

Parameters

UNIQUE

Hace que el sistema compruebe si hay valores duplicados en la tabla cuando crea el índice, si ya existen datos y cada vez que añade datos. Los intentos de insertar o actualizar datos que dan lugar a entradas duplicadas generan un error.

IF NOT EXISTS

No se genera un error si ya existe una relación con el mismo nombre. En este caso, se emite un aviso. Tenga en cuenta que no hay garantía de que el índice existente sea similar al que se habría creado. El nombre del índice es obligatorio cuando se especifica IF NOT EXISTS.

INCLUDE

La cláusula opcional INCLUDE especifica una lista de columnas para incluir en el índice como columnas no clave. No puede utilizar una columna no clave en una cualificación de búsqueda de análisis de índice y Aurora DSQL no la tiene en cuenta a los efectos de cualquier restricción de unicidad o exclusión que impone el índice. Sin embargo, un análisis de solo índice puede devolver el contenido de columnas no clave sin tener que visitar la tabla del índice, ya que están disponibles directamente desde la entrada del índice. Por lo tanto, añadir columnas no clave permite realizar búsquedas de solo índice en consultas que, de otro modo, no podrían utilizarlas.

Las expresiones no se admiten como columnas incluidas, ya que no se pueden usar en exploraciones de solo índice.

name

El nombre del índice que crear. No puede incluir un nombre de esquema aquí. Aurora DSQL siempre crea el índice en el mismo esquema que su tabla principal. El nombre del índice debe ser distinto del nombre de cualquier otra relación, como una tabla, una secuencia, un índice o una vista, en ese esquema. Si omite el nombre, Aurora DSQL elige un nombre adecuado en función del nombre de la tabla principal y de los nombres de las columnas indexadas.

table_name

El nombre (opcionalmente cualificado por el esquema) de la tabla que se va a indexar.

column_name

El nombre de una columna de la tabla.

expresión

Una expresión basada en una o varias columnas de la tabla. Por lo general, debe escribir la expresión entre paréntesis, como se muestra en la sintaxis. Sin embargo, puede omitir los paréntesis si la expresión tiene la forma de una llamada a una función.

NULLS FIRST

Especifica que los valores nulos se ordenan antes que los valores no nulos.

NULLS LAST

Especifica que los valores nulos se ordenan después de los no nulos.

NULLS DISTINCT
NULLS NOT DISTINCT

Especifica si los valores nulos se consideran distintos, es decir, no iguales, para un índice único. El valor predeterminado es que son distintos, de modo que un índice único puede contener varios valores nulos en una columna.

Ejemplos

Crear un índice único en la columna title de la tabla films.

CREATE UNIQUE INDEX ASYNC title_idx ON films (title);

Crear un índice único en la columna title con las columnas director y rating en la tabla films.

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

Crear un índice en la expresión lower(title), que permita realizar búsquedas eficientes que no distingan mayúsculas de minúsculas.

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

En este ejemplo se omite el nombre del índice, por lo que Aurora DSQL elige un nombre, normalmente films_lower_idx.

Crear un índice con un orden de clasificación de valores nulos que no sea el predeterminado.

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