• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

extint

Ajuda na Indexação de tabelas

10 mensagens neste tópico

Boa tarde pessoal,

Eu estou a desenvolver um projecto (projecto da faculdade) que obriga a ter tabelas da base de dados (Sql Server) com muitos dados, chegando mesmo aos 10 milhoes de registos. A minha dificuldade é a seguinte:

Para melhorar o desenho das pesquisas, inserções ou eliminações de dados, verifiquei que o melhor é criar um index nas tabelas, so que o problema é que nao sei bem como é que poderei fazer a implementação dos index e depois como e que poderei funcionar com eles! será que alguem me poderá dar uma ajudar? tipo disponibilizar aqui algum material ou paginal com exemplos de implementação!

Obrigado e abraços a todos.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A utilização dos index é implicita, se tiverem criados estão a ser usados.

Os index podem aumentar a performance de um select, mas diminuem dos inserts e updates.

Deves criar indexes das tabelas em q fazes mtos selects no campo q é mais filtrado nas querys.

As primary keys já são indexadas por defeito.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Atenção que a inclusão de índices per se pode não resolver o problema, em casos extremos pode inclusive degradar a performance dos inserts/deletes e ser totalmente ignorado nos selects.

Atenção também que não raras vezes a rescrita das queries de forma mais eficiente resulta em ganhos de performance muito grandes.

Se tens tabelas grandes, a primeira coisa a fazer não é meter índices mas sim usar o query analyser para veres o plano de execução e assim saberes onde as queries estão a demorar mais tempo.

A partir dai decides onde deves intervir: que indíces criar ou eliminar (sim, não raras vezes os índices não estão lá a fazer nada), rescrever a query para ser mais eficiente, reestruturar a tabela ou a base de dados para ser mais eficiente, etc..

Acima de tudo não mexer em nada sem analisar antes o problema e fazer a intervenção só depois de se saber quais são os pontos críticos.

Usar de novo o plano de execução para ver se a intervenção resultou.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mais um coisa, não deves criar mais do q um indice por tabela.

E a parte q o M6 referiu da escrita das querys é mto importante, uma query bem estruturada pode aumentar em mto a performance.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

bruno1234, isso de não criares mais do que um índice por tabela não é linear.

Podes ter vários índices, incluindo de vários tipos diferentes, tens é de garantir que a sua inclusão é benéfica, como referi acima, analisar plano de execução é critico para esta tarefa.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já agora aproveito este tópico para perguntar se a Indexação tem de ser definida com a tabela vazia?

e caso não seja preciso, o que acontece se a Indexação for definida com dados na tabela?

Obrigado desde já pelo esclarecimento.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes definir das duas maneiras, vazia ou não.

Os indices são criados de acordo com os dados q tens na tabela, e são recriados a cada insert/update/delete.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

E sabes-me explicar a diferença entre usar clustering ou nao ? Obrigado e desculpa la.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado pela tua ajuda vou ler isso para ver se consigo aplicar à minha bd.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora