[firebase-br] Left Join muito Lento no Firebird 3 como resolvo ?

Luciano franca luapfirebird em yahoo.com.br
Seg Ago 1 13:45:09 -03 2016


Pessoal o firebird não usa índice quando uso um Left Join ?
Estou usando o Firebird 3 final
a tabela é
   CADASTRO_CIDADES (    COD_UF         "AlfaNumerico_2" NOT NULL,    COD_MUNICIPIO  "AlfaNumerico_5" NOT NULL COLLATE WIN_PTBR,    UF             "AlfaNumerico_20" NOT NULL COLLATE WIN_PTBR,    MUNICIPIO      "AlfaNumerico_60" NOT NULL COLLATE WIN_PTBR,    UF_SIGLA       "AlfaNumerico_2" );
ALTER TABLE CADASTRO_CIDADES ADD CONSTRAINT PK_CADASTRO_CIDADES PRIMARY KEY (COD_UF, COD_MUNICIPIO);

 Criei esse indice abaixo mais não resolveu nadaCREATE INDEX CADASTRO_CIDADES_IDX1 ON CADASTRO_CIDADES (COD_UF, COD_MUNICIPIO);

 Select CE.* From Cadastro_Endereco CE Left Join Cadastro_Cidades CCI On (CCI.Cod_UF || CCI.Cod_Municipio = CE.Cod_Cidade)

Se eu Usar Inner join no lugar de Left Join o Plan é esse de baixoPLAN JOIN (CCI NATURAL, CE INDEX (CADASTRO_ENDERECO_IDX1))

 Se eu usar Left Join o Plan é esse PLAN JOIN (CE NATURAL, CCI NATURAL)

 Se eu tentar forçar o plan usando o mesmo Plan do Inner Join dá o seguinte erroindex CADASTRO_ENDERECO_IDX1 cannot be used in the specified plan.




Mais detalhes sobre a lista de discussão lista