Index Propostas

1

Como uma questão teórica de banco de dados, se você for perguntado 'quais índices você propõe e por quê?' são as respostas de primary , clustering e secondary index? Como saberíamos se devíamos introduzir um desses contra um B-Tree ?

Isso deve ser de uma perspectiva de indexação simplista, como eu estou perguntando devido ao material do curso relacionado a índices, onde eu abordei alguns materiais introdutórios.

    
por Torbal 07.06.2012 / 09:33

1 resposta

2
Os índices

primary e secondary são ortogonais aos índices b-tree e hash , e ambos são ortogonais aos índices clustered e non-clustered .

  • A primeira classe de índices são índices lógicos. Eles são indicadores de alto nível sobre a estrutura de seus dados. A chave primária deve identificar exclusivamente seus dados, o que significa que deve ser uma das razões que a teoria do banco de dados chama de "chave candidata". Os índices secundários são para acelerar consultas em outros campos que não o índice principal e não precisam ser chaves candidatas.

  • A segunda classe são implementações de índices específicas, adequadas para consultas ligeiramente diferentes. b-tree pode atender consultas de intervalo ( WHERE c > 3 AND c < 7 ) que hash não podem. hash é, no entanto, O (1) (tempo constante) no caso médio em consultas exatas ( WHERE c = 5 ), enquanto b-tree é O (lg n) (tempo logarítmico) sempre. b-tree e hash são ambas as estruturas de dados bem definidas, mas elas têm muito pouco a ver com seus dados reais.

  • A terceira classe define se a tabela inteira é classificada no disco pela ordem de classificação do índice. Se esse for o caso, ele é chamado de clustered index.

Como você pode ver, um índice pode ser um primary clustered b-tree ou um primary clustered hash ou alguma outra combinação extraída dessas três classes diferentes.

Se lhe perguntassem quais índices introduzir, a resposta seria principalmente da primeira classe. A questão é provavelmente sobre o esquema. Esse é o seu ponto de partida, pelo menos. Somente quando você tiver decidido quais índices apresentar, é necessário pensar se eles devem ser b-trees, cluster etc. A primeira classe é lógica, strongmente associada a como você está usando os dados. Os outros são detalhes de implementação.

    
por 07.06.2012 / 09:50