[Resolvido] Problema com Performance
Pessoal,
Estou tendo um problema com a seguinte query, ela retorna mtos registros e por conta disso, fica uma tremenda carroça.
alguém pode me ajudar a dar uma otimizada nela?
já não sei mais o que fazer.
select convert(varchar,r.cod_ramo) + '-' + r.Descricao as Ramo,
convert(varchar(20),str_cod_suc) + '-' + su.str_nome_suc as sucursal,
ab.Apolice,
ai.Cod_Item,
ab.Endosso,
ab.Tipo_Endosso,
convert(varchar(20),cob.cod_cobertura) + '-'+ cob.Descricao_Cobertura as cod_cobertura ,
ab.Dt_Emissao,
ab.Dt_Inicio_Vigencia,
ab.Dt_Fim_Vigencia,
ab.Cod_Segurado ,
RIGHT(REPLICATE('0',3) + convert(varchar,ac.cod_produto),3)+ RIGHT(REPLICATE('0',3) + convert(varchar,ac.cod_sub_produto),3)+ '-'+convert(varchar(20), p.Descricao_Produto) as Descricao_Produto,
case when ab.cia_renova = '5495' or ab.cia_renova = '6207' then 'Renovação Zurich'
when ab.cia_renova = NULL then 'Seguro Novo'
when ab.cia_renova <> NULL and ab.cia_renova <> '5495' and ab.cia_renova <> '6207' then 'Renovação Externa'
end cia_renova,
ai.cep,
ai.UF,
ai.municipio,
ab.lmi_unico,
substring(ab.apolice_renova,0,3)as suc_anterior,
ab.apolice_renova as apolice_ant,
replace(convert(varchar,ac.imp_segurada),'.',',') as valor_is,
replace(convert(varchar,ac.pr_cobertura),'.',',') as Premio_Cobertura,
replace(convert(varchar,ac.fr_cobertura),'.',',') as Franquia_Cobertura,
replace(convert(varchar,aco.perc_comissao_normal),'.',',')perc_comissao_normal,
ab.Cod_Operacao,
ab.cnpj_seg ,
ab.cod_empresa,
su.str_cod_suc,
ab.cod_ramo,
ab.Num_Certificado,
case when re.tipo_movto = 'N' then re.Valor_Comissao
when re.tipo_movto = 'R' then re.Valor_Comissao * -1
when re.tipo_movto = 'C' then re.Valor_Comissao
end as valor_comissao_res,
re.tipo_movto,
NULL as tip_franq,
NULL as metro_quadrado,
NULL as inspecao_risco,
NULL as tip_imovel,
NULL as constr_imovel,
NULL as hazard_grade,
NULL as sprinkler,
NULL as alarme,
NULL as perc_cedido_risco,
case when re.tipo_movto = 'N' then re.valor_premio
when re.tipo_movto = 'R' then re.valor_premio * -1
when re.tipo_movto = 'C' then re.valor_premio
end as valor_premio_res,
NULL as Cod_Canal_BW,
NULL as cod_sic,
NULL as cod_cl_ocup,
NULL as cod_cl_enqdr,
NULL as cod_categ,
NULL as cod_exp,
NULL as tipo_pessoa,
NULL as idade_imovel,
NULL as item_ant,
case when e.Cod_Empresa = '01' then 'SISE'
when e.Cod_Empresa = '02' then 'TIA'
when e.Cod_Empresa = '5495' then 'GAC'
else e.descricao_empresa
end descricao_empresa,
ab.perc_cedido_risco as perc_cedido_risco_coss,
pl.Descricao_Plano
into #tmpEmissao
from
apolice_base ab with (nolock)
inner join apolice_item ai with (nolock) on ab.cod_empresa = ai.cod_empresa
and ab.cod_filial = ai.cod_filial
and ab.cod_ramo = ai.cod_ramo
and ab.apolice = ai.apolice
and ab.endosso = ai.endosso
inner join apolice_item_cobertura ac with (nolock) on ai.cod_empresa = ac.cod_empresa
and ai.cod_filial = ac.cod_filial
and ai.cod_ramo = ac.cod_ramo
and ai.apolice = ac.apolice
and ai.endosso = ac.endosso
and ai.cod_item = ac.cod_item
inner join apolice_comissao aco with (nolock) on ab.cod_empresa = aco.cod_empresa
and ab.cod_filial = aco.cod_filial
and ab.cod_ramo = aco.cod_ramo
and ab.apolice = aco.apolice
and ab.endosso = aco.endosso
inner join coberturas cob with (nolock) on ac.Cod_Empresa = cob.Cod_Empresa
and ac.cod_ramo = cob.cod_ramo
and ac.Cod_Produto = cob.Cod_Produto
and ac.Cod_Cobertura = cob.Cod_Cobertura
and ac.Cod_Sub_Produto = cob.Cod_Sub_Produto
inner join ramos r with (nolock) on ab.cod_ramo = r.cod_ramo
and ab.cod_empresa = r.cod_empresa
inner join empresa e with (nolock) on e.cod_empresa = ab.cod_empresa
inner join sucursais su with (nolock) on ab.Cod_Filial = su.STR_cod_suc
inner join produtos p with (nolock) on p.cod_empresa = ac.cod_empresa
and p.cod_ramo = ac.cod_ramo
and p.cod_produto = ac.cod_produto
and p.cod_sub_produto = ac.cod_sub_produto
left join brzdesenv101.resseguro.dbo.resseguro re on ab.cod_empresa = re.cod_empresa
and ab.cod_filial = re.cod_filial
and ab.cod_ramo = re.cod_ramo
and ab.apolice = re.apolice
and ab.endosso = re.endosso
and ab.Num_Certificado = re.Num_Certificado
left join brzdesenv101.resseguro.dbo.plano pl on re.cod_empresa = pl.cod_empresa
and re.cod_plano = pl.cod_plano
where ab.Dt_Emissao Between'20110101' and '20111231'
and r.cod_ramo in (14,16,18,30,62,71)
and ab.cod_empresa = 1
group by
convert(varchar,r.cod_ramo) + '-' + r.Descricao,
su.str_cod_suc,
su.str_nome_suc,
ab.Apolice,
ai.Cod_Item,
ab.Endosso,
ab.Tipo_Endosso,
cob.Cod_Cobertura,
cob.Descricao_Cobertura,
ab.Dt_Emissao,
ab.Dt_Inicio_Vigencia,
ab.Dt_Fim_Vigencia,
ab.cod_segurado,
p.Descricao_Produto,
ab.cia_renova,
ai.cep,
ai.UF,
ai.municipio,
ab.lmi_unico,
ab.apolice_renova,
aco.perc_comissao_normal,
ab.Cod_Operacao,
e.Cod_Empresa,
e.Descricao_Empresa,
ac.imp_segurada ,
ac.pr_cobertura ,
ac.fr_cobertura ,
ac.Cod_Ramo ,
ac.Cod_Produto,
ac.Cod_Sub_Produto,
ab.cnpj_seg,
ab.Num_Certificado,
ab.cod_ramo,
ab.cod_empresa
,re.valor_premio,
re.valor_Comissao
,pl.Descricao_Plano,
re.tipo_movto,
ai.tip_franq,
ai.metro_quadrado,
ai.inspecao_risco,
ai.tip_imovel,
ai.constr_imovel,
ai.hazard_grade,
ai.sprinkler,
ai.alarme,
ab.perc_cedido_risco,
ab.Cod_Canal_BW,
ai.cod_cl_ocup,
ai.cod_cl_enqdr,
ai.cod_categ,
ab.cod_exp,
ai.idade_imovel,
ab.item_ant
order by ai.cod_item
Discussão (10)
Carregando comentários...