O que é um índice em SQL?

O que é um index em SQL? Você pode explicar ou fazer referência para entender claramente?

Onde devo usar um índice?

Solução

Um índice é usado para acelerar a pesquisa na base de dados. O MySQL tem uma boa documentação sobre o assunto (que também é relevante para outros servidores SQL): http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html

Um índice pode ser usado para encontrar eficientemente todas as linhas que correspondem a alguma coluna na sua consulta e depois percorrer apenas aquele subconjunto da tabela para encontrar correspondências exatas. Se você não't tem índices em qualquer coluna na cláusula WHERE, o servidor SQL tem que caminhar por a tabela inteira e verificar cada linha para ver se ela corresponde, o que pode ser uma operação lenta em tabelas grandes.

O índice também pode ser um índice UNIQUE, o que significa que você não pode ter valores duplicados naquela coluna, ou uma PRIMARY KEY que em alguns mecanismos de armazenamento define onde no arquivo da base de dados o valor é armazenado.

No MySQL você pode utilizar EXPLAIN na frente da sua declaração SELECT para ver se a sua consulta fará uso de qualquer índice. Este é um bom começo para resolver problemas de desempenho. Leia mais aqui: http://dev.mysql.com/doc/refman/5.0/en/explain.html

Comentários (0)

Um índice é usado para acelerar o desempenho das consultas. Ele faz isso reduzindo o número de páginas de dados da base de dados que devem ser visitadas/escaneadas.

No SQL Server, um índice cluído determina a ordem física dos dados em uma tabela. Só pode haver um índice agrupado por tabela (o índice agrupado é a tabela). Todos os outros índices em uma tabela são chamados de não agrupados.

Comentários (0)

Um [índice][1] é usado por várias razões diferentes. A principal razão é para acelerar a consulta para que você possa obter filas ou classificar filas mais rapidamente. Outra razão é para definir uma chave primária ou índice único que garantirá que nenhuma outra coluna tenha os mesmos valores.

[1]: http://en.wikipedia.org/wiki/Index_(base de dados)

Comentários (0)