Array
(
)

Quando gerar Index

Ureis
   - 30 jun 2011

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.

Wilson Paulista...!!!
   - 30 jun 2011

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

Aguardo retorno.

0
|
0

Ureis
   - 30 jun 2011



Citação:
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.

0
|
0

Alex Lekao
   - 30 jun 2011

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

0
|
0

Wilson Paulista...!!!
   - 30 jun 2011

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.

0
|
0

Ureis
   - 30 jun 2011



Citação:
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.

0
|
0

Wilson Paulista...!!!
   - 30 jun 2011

De uma olhada neste link http://www.devmedia.com.br/post-2488-Tuning-Plano-de-Execucao-Parte-2.html

Espero ter colaborado.

0
|
0

Alex Lekao
   - 30 jun 2011

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  

0
|
0