O que é um índice no SQL?

O que é um índice no SQL? Você pode explicar ou referência para entender claramente?

Onde devo usar um índice?

Um índice é usado para acelerar a pesquisa no database. 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 localizar com eficiência todas as linhas correspondentes a alguma coluna em sua consulta e percorrer apenas esse subconjunto da tabela para encontrar correspondências exatas. Se você não tiver índices em nenhuma coluna na cláusula WHERE , o SQL Server terá que percorrer toda a tabela 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 nessa coluna ou uma PRIMARY KEY que, em alguns mecanismos de armazenamento, define onde, no arquivo de database, o valor é armazenado.

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

Um índice agrupado é como o conteúdo de um catálogo telefônico. Você pode abrir o livro em ‘Hilditch, David’ e encontrar todas as informações para todos os ‘Hilditch’s ao lado um do outro. Aqui as chaves para o índice clusterizado são (lastname, firstname).

Isso torna os índices clusterizados ótimos para recuperar muitos dados com base em consultas baseadas em intervalos, pois todos os dados estão localizados um ao lado do outro.

Como o índice clusterizado está realmente relacionado a como os dados são armazenados, existe apenas um deles por tabela (embora você possa trapacear para simular vários índices clusterizados).

Um índice não clusterizado é diferente, pois você pode ter muitos deles e eles apontam para os dados no índice clusterizado. Você poderia ter, por exemplo, um índice não agrupado na parte de trás de uma lista telefônica que é digitada (cidade, endereço)

Imagine se você tivesse que pesquisar na lista telefônica para todas as pessoas que moram em ‘Londres’ – com apenas o índice clusterizado você teria que pesquisar todos os itens da agenda telefônica já que a chave no índice clusterizado está ligada (lastname, primeiro nome) e, como resultado, as pessoas que vivem em Londres estão espalhadas aleatoriamente em todo o índice.

Se você tiver um índice não agrupado em (cidade), essas consultas poderão ser executadas muito mais rapidamente.

Espero que ajude!

Uma analogia muito boa é pensar em um índice de database como um índice em um livro. Se você tem um livro sobre os países e está procurando pela Índia, por que folhear o livro inteiro – o que equivale a uma varredura completa na terminologia do database – quando você pode simplesmente ir ao índice na parte de trás da página? livro, que irá dizer-lhe as páginas exatas onde você pode encontrar informações sobre a Índia. Da mesma forma, como um índice de livro contém um número de página, um índice de database contém um ponteiro para a linha que contém o valor que você está procurando em seu SQL.

Mais aqui

Um índice é usado para acelerar o desempenho de consultas. Isso é feito reduzindo o número de páginas de dados do database que precisam ser visitadas / verificadas.

No SQL Server, um índice clusterizado determina a ordem física dos dados em uma tabela. Pode haver apenas um índice clusterizado por tabela (o índice clusterizado é a tabela). Todos os outros índices em uma tabela são denominados não em cluster.

  • Noções básicas de índice do SQL Server

  • Índices do SQL Server: o básico

  • Índices do SQL Server

  • Princípios Básicos do Índice

  • Índice (wiki)

Índices são todos sobre como encontrar dados rapidamente . Índices em um database são análogos aos índices que você encontra em um livro. Se um livro tiver um índice e eu lhe pedir para encontrar um capítulo nesse livro, você poderá encontrá-lo rapidamente com a ajuda do índice. Por outro lado, se o livro não tiver um índice, você terá que gastar mais tempo procurando o capítulo, observando todas as páginas do começo ao fim do livro. De maneira semelhante, os índices em um database podem ajudar as consultas a localizar dados rapidamente. Se você é novo nos índices, os vídeos a seguir podem ser muito úteis. De fato, aprendi muito com eles.

Princípios Básicos do Índice
Índices Clusterizados e Não Clusterizados
Índices exclusivos e não exclusivos
Vantagens e desvantagens dos índices

Bem, em geral, o índice é uma B-tree Existem dois tipos de índices: cluster e nonclustered.

O índice clusterizado cria uma ordem física de linhas (pode ser apenas uma e, na maioria dos casos, também é uma chave primária – se você criar a chave primária na tabela, também criará um índice clusterizado nessa tabela).

O índice não clusterizado também é uma tree binária, mas não cria uma ordem física de linhas. Portanto, os nós folha de índice não clusterizado contêm PK (se existir) ou índice de linha.

Os índices são usados ​​para aumentar a velocidade da pesquisa. Porque a complexidade é de O (log N). Índices é um tópico muito grande e interessante. Posso dizer que criar índices em grandes bancos de dados é algum tipo de arte, às vezes.

INDEXES – para encontrar dados facilmente

UNIQUE INDEX – valores duplicados não são permitidos

Sintaxe para o INDEX

 CREATE INDEX INDEX_NAME ON TABLE_NAME(COLUMN); 

Sintaxe para UNIQUE INDEX

 CREATE UNIQUE INDEX INDEX_NAME ON TABLE_NAME(COLUMN); 

INDEX é uma técnica de otimização de desempenho que acelera o processo de recuperação de dados. É uma estrutura de dados persistente associada a uma Table (ou View) para aumentar o desempenho durante a recuperação dos dados dessa tabela (ou View).

A pesquisa baseada em índice é aplicada mais particularmente quando suas consultas incluem o filtro WHERE. Caso contrário, isto é, uma consulta sem WHERE-filter seleciona dados e processos inteiros. A pesquisa da tabela inteira sem o INDEX é chamada de varredura de tabela.

Você encontrará informações exatas para Sql-Indexes de maneira clara e confiável: siga estes links:

  1. Para entender os cocnept: http://dotnetauthorities.blogspot.in/2013/12/Microsoft-SQL-Server-Training-Online-Learning-Classes-INDEX-Overview-and-Optimizations.html
  2. Para entender a implementação: http://dotnetauthorities.blogspot.in/2013/12/Microsoft-SQL-Server-Training-Online-Learning-Classes-INDEX-Creation-Deletetion-Optimizations.html

Se você estiver usando o SQL Server, um dos melhores resources é o seu próprio Books Online que vem com a instalação! É o primeiro lugar a que eu me referiria para QUALQUER tópico relacionado ao SQL Server.

Se é prático “como devo fazer isso?” tipo de perguntas, então StackOverflow seria um lugar melhor para perguntar.

Além disso, eu não volto há algum tempo, mas o sqlservercentral.com costumava ser um dos principais sites relacionados ao SQL Server por aí.

Um índice é usado por vários motivos diferentes. O principal motivo é acelerar a consulta para que você possa obter linhas ou classificar linhas mais rapidamente. Outro motivo é definir um índice exclusivo ou de chave primária que garantirá que nenhuma outra coluna tenha os mesmos valores.