30/06/2011

Quando gerar Index

Bom dia a todos
Estou aprendendo SQL Server e estou com alguns problemas no meu serviço.Tem um select com alguns JOINS e a consulta demora em média 00:00:45s para mostrar 49 registros.Como sei quando e onde devo gerar index?Alguém pode me ajudar?
obrigado.

Respostas

30/06/2011

Wilson Paulista...!!!

Coloque aqui a estrutura das suas tabelas e o SQL que está sendo demorado para poder lhe ajudar.

Aguardo retorno.
Responder Citar

30/06/2011

Ureis


Coloque aqui a estrutura das suas tabelas e o SQL que está sendo demorado para poder lhe ajudar. Aguardo retorno.  
 

SELECT I.DescAgrupRemessa, I.CdPrd, PR.DescPrd, SUM(I.Qtd) AS Qtd, CAST('N' AS CHAR(1)) AS Faturar  FROM It_Doc I with(nolock)  JOIN Document D with(nolock) ON(I.NrContrDoc = D.NrContrDoc)  JOIN Produto PR with(nolock) ON(I.CdPrd = PR.CdPrd)    JOIN PedDocs PD with(nolock) ON(D.NrContrDoc = PD.NrContrDoc)  JOIN PedSai P with(nolock) ON(PD.NrContrPed = P.NrContrPed)  JOIN TbSitPed SP with(nolock) ON(P.CdSit = SP.CdSitPed)  WHERE D.TpDoc = '0'  AND (D.Cancelado = 'N' OR D.Cancelado IS NULL)  AND I.NrContrDocGerado IS NULL  AND I.DtPrevRemessa <= '2011-06-01'  AND I.DescAgrupRemessa IS NOT NULL  AND SP.OpSit = '01' GROUP BY I.DescAgrupRemessa, I.CdPrd, PR.DescPrd ORDER BY I.DescAgrupRemessa, PR.DescPrd
Eu precisava aprender a olhar e saber onde esta o problema e onde devo gerar o index.Se você poder me dar dicas de como fazer, ou onde aprender, como apostilas, sites e etc...
Obrigado.
Responder Citar

30/06/2011

Alex Lekao

Ola Uelington, boa tarde!!!   Voce pode pegar o seu script e no SSMS(SQL Server Management Studio) e onde vc faz as digitacoes dos scripts, selecionar o seu script e escolher a opcao Exibir Plano de Execucao Estimado.   Nessa tela o proprio SQL Server ira indicar para vc um ponto onde podera criar indice e o tipo de indice a ser adotado.   Tambem ira apresentar quanto custa cada ponto da sua select para a execucao total.   Tambem sou novato no SQL e portando talvez possa ter utilizado alguns termos nao costumeiros entao, qualquer coisa eh so avisar.   Espero ter podido ajudar.   Abraco.   Alex - Lekao
Responder Citar

30/06/2011

Wilson Paulista...!!!

O que pode lhe ajudar é utilizar "LEFT JOIN" ou "INNER JOIN", o LEFT você utiliza para FK's que podem ser nulas e o INNER você utiliza para as FK's que não são nulas (NOT NULL).

Espero ter colaborado.
Responder Citar

30/06/2011

Ureis


Ola Uelington, boa tarde!!!   Voce pode pegar o seu script e no SSMS(SQL Server Management Studio) e onde vc faz as digitacoes dos scripts, selecionar o seu script e escolher a opcao Exibir Plano de Execucao Estimado.   Nessa tela o proprio SQL Server ira indicar para vc um ponto onde podera criar indice e o tipo de indice a ser adotado.   Tambem ira apresentar quanto custa cada ponto da sua select para a execucao total.   Tambem sou novato no SQL e portando talvez possa ter utilizado alguns termos nao costumeiros entao, qualquer coisa eh so avisar.   Espero ter podido ajudar.   Abraco.   Alex - Lekao
 

Boa tarde,
Eu já tentei utilizar a opção de Exibir Plano de Execução Estimado. Mas como sou novo, não consigo entender muito bem.Se você tiver alguma video, ou qualquer outra coisa que me ajuda entender sobre esta opção, agradeço.
obrigado.
Responder Citar

30/06/2011

Wilson Paulista...!!!

Responder Citar

30/06/2011

Alex Lekao

Ola Uelinton, boa tarde!!!   Verifica se estes links da microsoft ajudam neste ponto do plano de execucao.   http://msdn.microsoft.com/pt-br/library/ms178071.aspx http://msdn.microsoft.com/pt-br/library/ms191227.aspx (este tera um link para o anterior). http://technet.microsoft.com/pt-br/library/ms191194(SQL.100).aspx   Sao alguns pontos onde tenho verificado algumas coisas quando tenho duvida.   tem sido bastante util.   Abraco.   Alex - Lekao  
Responder Citar