Fórum Consulta em sql muito lenta. #382174

26/07/2010

0

Olá pessoal, estou com uma consulta em sql mas ela fica muito lenta para ser executada, vou passar a baixo se algum tiver alguma idéia agradeço.   select distinct TB1.codigocli,TB1.codigonome,TB1.codigoserv,TB2.descricaotxt,TB3.codigo from
      ClienteNome TB1 inner join Nometxt TB2 on TB1.codigonome = TB2.codigonome
      left join tmplj TB3 on TB3.descricao like '%'+(RTRIM(TB2.descricaotxt))+'%'
      where TB3.descricao is not null and TB1.codigoserv = 1
      order by TB3.codigo     Muito Obrigado.
Marcelo

Marcelo

Responder

Posts

26/07/2010

Eriley Barbosa

Tente primeiro fazer a ligação entre TB2 e TB3 e depois passe o like como condição:   select   distinct TB1.codigocli,TB1.codigonome,TB1.codigoserv,TB2.descricaotxt,TB3.codigo from
      ClienteNome TB1 inner join Nometxt TB2 on TB1.codigonome = TB2.codigonome
      left join tmplj TB3 on  --Faça a qui a ligação entre TB2 e TB3     where TB3.descricao is not null and TB1.codigoserv = 1 and TB3.descricao like '%'+(RTRIM(TB2.descricaotxt))+'%'
order by   TB3.codigo   Atenciosamente   Eriley
Responder

Gostei + 0

26/07/2010

Marcelo

Obrigado ERILEY pela atenção, mas esta TB3 ainda não tem relação com nenhuma tabela e relacionamento será feito se ela tiver alguma semelhança no like.   Obrigado.
Responder

Gostei + 0

27/07/2010

Rafael Reis

Não sei qual a estrutura e regras de negócio do seu banco, mas acho que o ideal seria então normalizar o seu banco, ja pensou nessa possibilidade?   espero ter ajudado
Responder

Gostei + 0

27/07/2010

Eriley Barbosa

Sugiro que crie uma relação, pois, a linha left join tmplj TB3 on TB3.descricao like '%'+(RTRIM(TB2.descricaotxt))+'%'
Causara um table scan e os indices mesmo se existirem serão ignorados.   Atenciosamente   Eriley
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar