Executando verificação de segurança...
5

Existem vários tipos de índices, mas a ideia básica é que eles criam uma estrutura de dados que abrange todos os registros (embora também existam índices parciais, mas o mais comum é sempre considerar todos).

Ou seja, no seu exemplo o segundo código sempre encontraria o respectivo registro em indexes. Claro que seria uma estrutura diferente, mas enfim.

O mais comum é usar uma árvore B, embora existam outros tipos de índices, como o hash e índice invertido, cada um com características distintas e que servem a situações específicas.

Para uma explicação bem mais detalhada, leia aqui, aqui, aqui, aqui, aqui e aqui.

Carregando publicação patrocinada...
4

É importante notar que a ideia básica do exemplo realmente ilustra bem o que é um índice. Ele inverte o que é chave e valor em relação a tabela. A chave da tabela é identificar o único que é usado para chegar na informação que deseja, enquanto que no índice ele é o valor que é usado para referenciar onde está o objeto que realmente se quer ter acesso, a chave é a informação que está procurando.

Como bem respondido, nessa estrutura de Lua não funciona bem como um índice, porque o índice permite chaves duplicadas (ao contrário da tabela), e a estrutura de tabela de Lua não permite chaves duplicadas. E ainda potencialmente pode ter que percorrer toda estrutura para achar o que deseja, já que o hash pode ter colisões, embora na prática será muito rápido e isso 
não acontecerá, então poderá ser tão ou mais rápido que uma árvore B.

Uma árvore B é mais complexa, mas dá melhores garantias, além de permitir a duplicidade. E principalmente funciona melhor para armazenamento de massa organizados em blocos de dados como é um HDD ou SSD.

Existem outras estruturas para certos tipos de índices que podem ser mais otimizadas para certa situação, por exemplo indexar um booleano onde é preferível usar um índice de bitmap. Onde a escrita é mais importante que a leitura pode ser útil um índice, ou mesmo as tabelas, organizadas em log structered merge.

SQL e índices são coisas completamente independentes.

Espero ter ajudado.


Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente. Para saber quando, me segue nas suas plataformas preferidas. Quase não as uso, não terá infindas notificações (links aqui).