Consulta em sql muito lenta.

Delphi

26/07/2010

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

Curtidas 0

Respostas

Eriley Barbosa

Eriley Barbosa

26/07/2010

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
GOSTEI 0
Marcelo

Marcelo

26/07/2010

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.
GOSTEI 0
Rafael Reis

Rafael Reis

26/07/2010

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
GOSTEI 0
Eriley Barbosa

Eriley Barbosa

26/07/2010

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
GOSTEI 0
POSTAR