Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

MarKteus

[Resolvido] Como criar e usar Indices?

Recommended Posts

Alguém sabe como posso criar e usar indices em uma procedure ?

 

Eu acredito já ter feito só quero tirar a dúvida pra saber se está correto.

 

Outra coisa INDICES funcionam quando se usa a clausula IN

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguém sabe como posso criar e usar indices em uma procedure ?

 

Eu acredito já ter feito só quero tirar a dúvida pra saber se está correto.

 

Outra coisa INDICES funcionam quando se usa a clausula IN

 

hã? você ker criar indice para ser usado na proc ou dentro da proc? O_o

Indices funcionam qdo se usa IN, Exists, where, case, mas vai depender do seu plano de execucao.

 

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguém sabe como posso criar e usar indices em uma procedure ?

 

Eu acredito já ter feito só quero tirar a dúvida pra saber se está correto.

 

Outra coisa INDICES funcionam quando se usa a clausula IN

 

hã? você ker criar indice para ser usado na proc ou dentro da proc? O_o

Indices funcionam qdo se usa IN, Exists, where, case, mas vai depender do seu plano de execucao.

 

Abçs

 

você ker criar indice para ser usado na proc ou dentro da proc?

 

Nos dois casos

Compartilhar este post


Link para o post
Compartilhar em outros sites

MarKteus:

 

Índices não tem relação direta com procedures.

 

Índices de BD funcionam mais ou menos como os índices de um livro, achar um capítulo (principal) achar uma pessoa ou enteidade citado

na obra (remissivo).

 

No instante de um SELECT o BD faz uma ponderação entre os índices existentes as estatísticas do BD e decide qual o melhor caminho, isto é feito esteja a

query em uma procedure ou não.

 

Em geral índices melhoram a performance de leitura de um registro, mas degradam a gravação pois as tabelas dos índices precisam ser gravadas.

Para ser criar um índice deve-se pesar o custo benefício destes tempos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade quando eu digo usar com procedures estou querendo dizer é como criar e usar indices para agilizar a execução de uma procedure. Procedures cujo o objetivo principal é resgatar e exibir dados de tabelas variadas, pois estou com um procedure demorando muito para retornar dados de tabelas e quando a chamada da proc é feita via ASP, quase sempre recebo a mensagem de erro Scripting Timeout

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verifique query a query.

 

1) Existe algum erro visísel ?

Faça a correção (Uma vez analisei uma SP que demorava 2 h, uma correção na query a fez rodar em 2 min.)

 

2) Faça o Plano de Execução (query a query)

Dá para melhorar algo ? (Pelo plano de execução dá ver se outra forma de montar a query melhoraa coisa, ou uso de hint (tem no SqlServer?)

 

3) Índices poderiam ajudar em alguma destas queries ?

3.1) Para isto é preciso ponderar a caracterista da consulta, dos dados filtrados, seus tipos

e valores diferentes.

3.2) Com base nisto criar um índice (do tipo correto) para a tabela.

 

Este tipo de tuning não é sempre fácil.

 

---------------------------

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prezado(s)

 

Consegui resolver a questão e a Proc ficou bastante rápida + ou - 80% de ganho de performance, contudo, tive que abdicar-me do uso da cláusula IN

 

Obrigado a todos pela ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O Plano de Execução muda muito do In para a solução sem o In ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.