Índice primário:
Um índice utilizado para melhorar o desempenho na combinação das colunas mais utilizadas para acessar linhas em uma tabela.
O índice que controla a ordem de processamento atual de um arquivo. Mantém um índice na chave primária.
Índice secundário:
Um índice mantido para um arquivo de dados, mas não é utilizado para controlar a ordem de processamento atual do arquivo. Por exemplo, um índice secundário pode ser mantido para o nome do cliente, enquanto o índice primário é estabelecido para o número da conta do cliente.
O índice secundário é automaticamente utilizado durante a busca quando melhora a eficiência da mesma.
Os índices secundários são mantidos pelo sistema e são invisíveis para o usuário.
Qualquer coluna(s) pode ser especificada como um índice secundário, exceto as colunas declaradas utilizando um tipo de dados LOB.
As colunas na CHAVE PRIMÁRIA, as colunas de uma CHAVE ESTRANGEIRA e as colunas definidas como ÚNICAS são indexadas automaticamente, (na ordem em que são definidas na chave), portanto, a criação de um índice nessas colunas não melhorará o desempenho.
As tabelas de índices secundários são puramente para uso interno do Mimer SQL: você cria o índice e o Mimer SQL cuida do resto.
Por exemplo, se você deseja saber quais produtos foram lançados em uma data específica, o Mimer SQL teria que procurar sucessivamente em toda a tabela de ITENS para encontrar todos os itens que correspondem à data especificada. No entanto, se você criar um índice secundário na data de lançamento, o Mimer SQL localizaria essa data diretamente no índice secundário, economizando tempo.
Os índices secundários podem melhorar a eficiência da recuperação de dados; mas introduzem uma sobrecarga para as operações de escrita (ATUALIZAR, INSERIR, EXCLUIR). Em geral, você só deve criar índices para colunas que são frequentemente pesquisadas.
Não é possível criar índices diretamente em colunas em visualizações. No entanto, como a busca em uma visualização é implementada como uma busca na tabela base, um índice na tabela base também será usado nas operações de visualização.
Exemplos de Índice Secundário
Criar um índice secundário chamado ITM_RELEASE_DATE na coluna RELEASE_DATE da tabela ITENS:
CREATE INDEX itm_release_date ON itens(release_date);
As colunas da chave primária também podem ser incluídas em um índice secundário. Se uma tabela tem as colunas da chave primária A, B e C, o índice primário cobriria as três colunas da chave primária.
As seguintes combinações das colunas na chave primária são indexadas automaticamente: A, AB e ABC. Além disso, índices secundários podem ser criados nas colunas B, C, BC, AC, etc.
Um índice também pode ser definido como ÚNICO, o que significa que o valor do índice só pode ocorrer uma vez na tabela. (Para esse propósito, NULL é tratado como igual a NULL). No entanto, é preferível usar restrições únicas.
Criar um índice secundário ÚNICO chamado ITM_EAN_CODE na coluna EAN_CODE da tabela ITENS:
CREATE UNIQUE INDEX itm_ean_code ON ITEMS(ean_code);