Re: [firebase-br] O firebird não está usando o indice do campo Razao para retornar a query

Carlos H. Cantu listas em warmboot.com.br
Dom Maio 15 09:37:16 -03 2005


O otimizador não "gosta" de left joins, especialmente se você estiver
usando o FB 1.0.

No 1.5 isso foi melhorado, e no FB 2.0 está ainda melhor.

[]s
Cantu
http://www.warmboot.com.br
FireBase - http://www.FireBase.com.br

RSC> Bom dia Pessoal

RSC> Estou com a seguinte situação:

RSC> Tenho uma tabela com aprox. 2 milhões de registros ( dados apenas para
RSC> teste ). Quando executo a query abaixo usando a "ordem natural", ou seja
RSC> sem "ORDER BY", o retorno dos dados é imediado ( teste no ibexpert ).
RSC> Mas quando eu utilizo order by e.nome, demora mais de 1 minuto para
RSC> retornar. Tirando os Left join, os dados também retornam de imediato com
RSC> o Order by e.nome. O que está errado nesta query? Tentei utilizar o
RSC> PLAN, mas não obtive resultados. Porque o banco demora a retornar os
RSC> dados se eu tenho um indice por NOME?

RSC> Reuber

RSC> SELECT E.CODCLI
RSC>     , E.RAZAO
RSC>     , D.NOME
RSC>     , E.FANTASIA
RSC>     , E.NATUREZA
RSC>     , E.CODMUNCOM
RSC>     , A.DESCMUN AS DESCMUNCOM
RSC>     , G.UF AS UFCOM
RSC>     , E.ENDERECOCOM
RSC>     , E.BAIRROCOM
RSC>     , E.CXPOSTALCOM
RSC>     , E.CODMUNCOB
RSC>     , B.DESCMUN AS DESCMUNCOB
RSC>     , H.UF AS UFCOB
RSC>     , E.ENDERECOCOB
RSC>     , E.BAIRROCOB
RSC>     , E.CXPOSTALCOB
RSC>     , E.CADASTRO
RSC>     , E.COBRANCA
RSC>     , E.NFONE
RSC>     , E.CELULAR
RSC>     , E.FAX
RSC>     , E.EMAIL
RSC>     , E.SITE
RSC>     , E.CNPJCPF
RSC>     , E.IERG
RSC>     , E.CEPCOB
RSC>     , E.CEPCOM
RSC>     , E.CODCNAE
RSC>     , C.DESCCNAE
RSC>     , E.CODPROP
RSC>     , D.CPF AS CPFPROP
RSC>     , E.CODBANCO
RSC>     , F.DESCBANCO
RSC>     , E.EMITENOTA
RSC>     , E.NUMCONTRATO
RSC> FROM CLIENTES E
RSC> left join LOCALIDADES A ON (A.CODMUN=E.CODMUNCOM)
RSC> left join LOCALIDADES B ON (B.CODMUN=E.CODMUNCOB)
RSC> left join CNAE C ON (C.CODCNAE=E.CODCNAE)
RSC> left join PROPRIETARIOS D ON (D.CODPROP=E.CODPROP)
RSC> left join BANCOS F ON (F.CODBANCO=E.CODBANCO)
RSC> left join UFS G ON (G.DNE=A.DNEUF)
RSC> left join UFS H ON (H.DNE=B.DNEUF)
RSC> ORDER BY E.NOME






Mais detalhes sobre a lista de discussão lista