Seleção de Índices
A criação de índices deve ser criteriosa pois existem mais e menos valias:
Um índice pode acelerar o processo de pesquisa de um valor num atributo (ou gama de valores) e junções envolvendo esse atributo.
Um índice introduz overhead ao nível do volume de dados e do tempo de inserção, atualização e eliminação de tuplos (i.e. as operações são mais complexas).
A escolha deve ser um compromisso entre:
perceber se vamos ter necessidade de efetuar muitas pesquisas envolvendo determinado atributo (candidato a index).
perceber se determinada relação vai ter modificações frequentes de dados.
Recomendação:
estudar o tipo de consultas das aplicações e/ou utilizar registos de log (histórico de queries) para ajudar na decisão.
Factor “Organização Física dos Dados”
Os tuplos estão distribuídos por várias páginas (blocos).
A pesquisa de um único tuplo obriga a carregar em memória toda a página onde ele se encontra.
Operações de I/O são bastante onerosas em termos temporais.
Os próprios índices também são guardados, total ou parcialmente, em páginas:
Operações de acesso e modificação dos índices também tem custos temporais.
Recomendação:
Tentar perceber se determinado índice obriga a carregar muitas (ou poucas) páginas em memória num processo de pesquisa
Índices que necessitam de carregar poucas páginas da relação, para encontrar o tuplo, reduzem significativamente o tempo de pesquisa
Critérios Genéricos
Indexação das chaves da relação.
Pesquisamos frequentemente por atributos chave da relação;
Sendo a chave única, ou existe tuplo ou não.
Só uma página é carregada para memória para ter o tuplo.
Se o índice não é chave da relação podemos ter (ou não) ganhos no tempo de pesquisa. Há duas situações recomendadas:
O atributo indexado tem poucos valores repetidos.
A relação têm o atributo indexado do tipo clustered.
Clustering é agrupar os valores desse atributo de forma a que ocupem o menor número de páginas.
Last updated