CREATE INDEX
CREATE INDEX define um novo índice. No Aurora DSQL, a criação do índice é sempre assíncrona e, portanto, você deve especificar a palavra-chave ASYNC. Para obter informações sobre como o Aurora DSQL executa compilações de índice assíncronas e como monitorá-las, consulte Índices assíncronos no Aurora DSQL.
Sintaxe compatível
CREATE [ UNIQUE ] INDEX ASYNC [ [ IF NOT EXISTS ] name ] ON table_name ( { column_name | ( expression ) } [ NULLS { FIRST | LAST } ] [, ...] ) [ INCLUDE ( column_name [, ...] ) ] [ NULLS [ NOT ] DISTINCT ]
Descrição
CREATE INDEX constrói um índice nas colunas especificadas da tabela especificada. Os índices são usados principalmente para melhorar o desempenho do banco de dados, embora o uso inadequado possa resultar em um desempenho mais lento.
Você especifica os campos-chave do índice como nomes de coluna ou, como alternativa, como expressões escritas entre parênteses. É possível especificar vários campos para criar um índice de várias colunas.
Um campo de índice pode ser uma expressão calculada a partir dos valores de uma ou mais colunas da linha da tabela. Use esse recurso para obter acesso rápido aos dados com base em alguma transformação dos dados básicos. Por exemplo, um índice calculado em upper(col) permite que a cláusula WHERE upper(col) = 'JIM' use um índice.
Todos os operadores e funções usados em uma definição de índice devem ser imutáveis. Ou seja, os resultados devem depender apenas de argumentos e nunca de alguma influência externa, como o conteúdo de outra tabela ou a hora atual. Essa restrição garante que o comportamento do índice seja bem definido. Para usar uma função definida pelo usuário em uma expressão de índice, lembre-se de marcar a função IMMUTABLE ao criá-la.
Parâmetros
UNIQUE-
Faz com que o sistema verifique se há valores duplicados na tabela ao criar o índice, se os dados já existirem e sempre que você adicionar dados. Tentativas de inserir ou atualizar dados que resultariam em entradas duplicadas gerarão um erro.
IF NOT EXISTS-
Não gera um erro se já houver uma relação com o mesmo nome. Um aviso é emitido nesse caso. Não há garantia de que o índice existente seja semelhante ao que seria criado. O nome do índice é obrigatório quando
IF NOT EXISTSé especificado. INCLUDE-
A cláusula opcional
INCLUDEespecifica uma lista de colunas a serem incluídas no índice como colunas não chave. Não é possível usar uma coluna não chave em uma qualificação de pesquisa de verificação de índice, e o Aurora DSQL a ignora para fins de alguma restrição de exclusividade ou exclusão imposta pelo índice. No entanto, uma verificação somente de índice pode retornar o conteúdo de colunas que não são chave sem precisar visitar a tabela do índice, pois elas estão disponíveis diretamente na entrada do índice. Assim, a adição de colunas que não são chave permite verificações somente de índice para consultas que, de outra forma, não poderiam usá-las.Não há suporte para expressões como colunas incluídas porque elas não podem ser usadas em verificações somente de índice.
name-
O nome do índice a ser criado. Não é possível incluir um nome de esquema aqui. O Aurora DSQL sempre cria o índice no mesmo esquema da tabela principal. O nome do índice deve ser diferente do nome de qualquer outra relação, como tabela, sequência, índice ou visualização, no esquema. Se você omitir o nome, o Aurora DSQL escolherá um nome adequado com base no nome da tabela principal e nos nomes das colunas indexadas.
table_name-
O nome, opcionalmente qualificado para o esquema, da tabela a ser indexada.
column_name-
O nome de uma coluna da tabela.
expressão-
Uma expressão baseada em uma ou mais colunas da tabela. Normalmente, você deve escrever a expressão entre parênteses, conforme mostrado na sintaxe. No entanto, você pode omitir os parênteses se a expressão tiver a forma de uma chamada de função.
NULLS FIRST-
Especifica que os valores nulos sejam classificados antes dos não nulos.
NULLS LAST-
Especifica que os valores nulos sejam classificados depois dos não nulos.
NULLS DISTINCTNULLS NOT DISTINCT-
Especifica se os valores nulos são considerados distintos, ou seja, não iguais, para um índice exclusivo. O padrão é que eles sejam diferentes, de modo que um índice exclusivo pode conter vários valores nulos em uma coluna.
Exemplos
Para criar um índice exclusivo na coluna title na tabela films.
CREATE UNIQUE INDEX ASYNC title_idx ON films (title);
Para criar um índice exclusivo na coluna title com colunas incluídas director e rating na tabela films.
CREATE UNIQUE INDEX ASYNC title_idx ON films (title) INCLUDE (director, rating);
Para criar um índice na expressão lower(title), o que permite realizar pesquisas eficientes sem distinção entre maiúsculas e minúsculas.
CREATE INDEX ASYNC ON films ((lower(title)));
Esse exemplo omite o nome do índice, então o Aurora DSQL escolhe um nome, normalmente films_lower_idx.
Para criar um índice com uma ordem de classificação não padrão de valores nulos.
CREATE INDEX ASYNC title_idx_nulls_low ON films (title NULLS FIRST);