T-SQL - índices

Indexessão tabelas de pesquisa especiais que o mecanismo de pesquisa de banco de dados pode usar para acelerar a recuperação de dados. Simplificando, umindexé um ponteiro para dados em uma tabela. Um índice em um banco de dados é muito semelhante a um índice no final de um livro.

Por exemplo, se você quiser fazer referência a todas as páginas de um livro que discute um determinado tópico, consulte primeiro o índice, que lista todos os tópicos em ordem alfabética e, em seguida, é referido a um ou mais números de página específicos.

Um índice ajuda a acelerar as consultas SELECT e cláusulas WHERE, mas diminui a entrada de dados, com instruções UPDATE e INSERT. Os índices podem ser criados ou eliminados sem efeito nos dados.

A criação de um índice envolve a instrução CREATE INDEX, que permite nomear o índice, especificar a tabela e qual coluna ou colunas indexar e indicar se o índice está em ordem crescente ou decrescente.

Os índices também podem ser exclusivos, semelhantes à restrição UNIQUE, no sentido de que o índice evita entradas duplicadas na coluna ou combinação de colunas nas quais há um índice.

Comando CREATE INDEX

A seguir está a sintaxe básica de CREATE INDEX.

Sintaxe

CREATE INDEX index_name ON table_name

Índices de coluna única

Um índice de coluna única é aquele criado com base em apenas uma coluna da tabela. A seguir está a sintaxe básica.

Sintaxe

CREATE INDEX index_name 
ON table_name (column_name)

Exemplo

CREATE INDEX singlecolumnindex 
ON customers (ID)

Índices Únicos

Índices exclusivos são usados ​​não apenas para desempenho, mas também para integridade de dados. Um índice exclusivo não permite que nenhum valor duplicado seja inserido na tabela. A seguir está a sintaxe básica.

Sintaxe

CREATE UNIQUE INDEX index_name 
on table_name (column_name)

Exemplo

CREATE UNIQUE INDEX uniqueindex 
on customers (NAME)

Índices Compostos

Um índice composto é um índice em duas ou mais colunas de uma tabela. A seguir está a sintaxe básica.

Sintaxe

CREATE INDEX index_name on table_name (column1, column2)

Exemplo

CREATE INDEX compositeindex 
on customers (NAME, ID)

Seja para criar um índice de coluna única ou um índice composto, leve em consideração a (s) coluna (s) que você pode usar com muita frequência na cláusula WHERE de uma consulta como condições de filtro.

Se houver apenas uma coluna usada, um índice de coluna única deve ser a escolha. Se houver duas ou mais colunas que são freqüentemente usadas na cláusula WHERE como filtros, o índice composto seria a melhor escolha.

Índices Implícitos

Índices implícitos são índices criados automaticamente pelo servidor de banco de dados quando um objeto é criado. Os índices são criados automaticamente para restrições de chave primária e restrições exclusivas.

Comando DROP INDEX

Um índice pode ser eliminado usando o comando MS SQL SERVER DROP. Deve-se ter cuidado ao descartar um índice, pois o desempenho pode ser reduzido ou melhorado.

Sintaxe

A seguir está a sintaxe básica.

DROP INDEX tablename.index_name

Quando evitar índices?

Embora os índices tenham como objetivo melhorar o desempenho dos bancos de dados, há momentos em que eles devem ser evitados. As seguintes diretrizes indicam quando o uso de um índice deve ser reconsiderado -

  • Os índices não devem ser usados ​​em tabelas pequenas.

  • As tabelas que possuem operações de inserção ou atualização de lote grandes e frequentes não devem ser indexadas.

  • Os índices não devem ser usados ​​em colunas que contêm um grande número de valores NULL.

  • As colunas que são frequentemente manipuladas não devem ser indexadas.