Bom dia amigos,
Tenho um subformulário que tem como recordsource uma consulta que vem de tabelas vinculadas do Banco de Dados SQL SERVER. Inicialmente eu atribuía via VBA, mas ela ficava lenta. O recordsource era o seguinte:
"select x.cod_prod_pv0131, y.desc_prod_pv0131, y.qtde_prod_pv0131, y.valor_unit_pv0131, y.dt_ped_pv0131 from ( "& _
"select max(dbo_pv0131.num_ped_pv0131) as MAXPED, dbo_pv0131.cod_prod_pv0131 from dbo_pv0131 left join dbo_pv0130 on dbo_pv0130.num_ped_pv0130 = dbo_pv0131.num_ped_pv0131 "& _
"where dbo_pv0130.cod_cli_pv0130 = '" & Cliente & "' and dbo_pv0130.status_pv0130 <> '4' " 'and dbo_pv0130.dt_ped_pv0130 > '" & Data & "' "& _
"group by dbo_pv0131.cod_prod_pv0131) as x left join dbo_pv0131 as y on x.dbo_pv0131.cod_prod_pv0131 = y.cod_prod_pv0131 and y.num_ped_pv0131 = x.MAXPED " 'where x.cod_prod_pv0131 not in (select cod_prod from orcTemp)"& _
"order by y.dt_ped_pv0131 desc "
Depois tentei criar uma Consulta de passagem com um DSN e atribuir o seguinte source:
"select x.cod_prod_pv0131, " & _
"y.desc_prod_pv0131," & _
"y.qtde_prod_pv0131," & _
"y.valor_unit_pv0131, " & _
"y.dt_ped_pv0131 " & _
"from ( " & _
"select max(num_ped_pv0131) as MAXPED," & _
"cod_prod_pv0131 " & _
"from pv0131 " & _
"left join pv0130 on num_ped_pv0130 = num_ped_pv0131 " & _
"where cod_cli_pv0130 = '" & Cliente & "' " & _
"and status_pv0130 <> '4' " & _
"and dt_ped_pv0130 > dateadd(dd,-" & dias & ",getdate()) " & _
"group by cod_prod_pv0131) as x " & _
"left join pv0131 as y on x.cod_prod_pv0131 = y.cod_prod_pv0131 " & _
"and y.num_ped_pv0131 = x.MAXPED " & _
"order by y.dt_ped_pv0131 desc "
Melhorou um pouco, mas continua muito mais lento do que é viável para o usuário. Alguém poderia POR FAVOR me ajudar a otimizar essa consulta? Quando eu rodo ela no SQL Server ela é instantânea, mas no Access leva mais do que três segundos!!!
Tenho um subformulário que tem como recordsource uma consulta que vem de tabelas vinculadas do Banco de Dados SQL SERVER. Inicialmente eu atribuía via VBA, mas ela ficava lenta. O recordsource era o seguinte:
"select x.cod_prod_pv0131, y.desc_prod_pv0131, y.qtde_prod_pv0131, y.valor_unit_pv0131, y.dt_ped_pv0131 from ( "& _
"select max(dbo_pv0131.num_ped_pv0131) as MAXPED, dbo_pv0131.cod_prod_pv0131 from dbo_pv0131 left join dbo_pv0130 on dbo_pv0130.num_ped_pv0130 = dbo_pv0131.num_ped_pv0131 "& _
"where dbo_pv0130.cod_cli_pv0130 = '" & Cliente & "' and dbo_pv0130.status_pv0130 <> '4' " 'and dbo_pv0130.dt_ped_pv0130 > '" & Data & "' "& _
"group by dbo_pv0131.cod_prod_pv0131) as x left join dbo_pv0131 as y on x.dbo_pv0131.cod_prod_pv0131 = y.cod_prod_pv0131 and y.num_ped_pv0131 = x.MAXPED " 'where x.cod_prod_pv0131 not in (select cod_prod from orcTemp)"& _
"order by y.dt_ped_pv0131 desc "
Depois tentei criar uma Consulta de passagem com um DSN e atribuir o seguinte source:
"select x.cod_prod_pv0131, " & _
"y.desc_prod_pv0131," & _
"y.qtde_prod_pv0131," & _
"y.valor_unit_pv0131, " & _
"y.dt_ped_pv0131 " & _
"from ( " & _
"select max(num_ped_pv0131) as MAXPED," & _
"cod_prod_pv0131 " & _
"from pv0131 " & _
"left join pv0130 on num_ped_pv0130 = num_ped_pv0131 " & _
"where cod_cli_pv0130 = '" & Cliente & "' " & _
"and status_pv0130 <> '4' " & _
"and dt_ped_pv0130 > dateadd(dd,-" & dias & ",getdate()) " & _
"group by cod_prod_pv0131) as x " & _
"left join pv0131 as y on x.cod_prod_pv0131 = y.cod_prod_pv0131 " & _
"and y.num_ped_pv0131 = x.MAXPED " & _
"order by y.dt_ped_pv0131 desc "
Melhorou um pouco, mas continua muito mais lento do que é viável para o usuário. Alguém poderia POR FAVOR me ajudar a otimizar essa consulta? Quando eu rodo ela no SQL Server ela é instantânea, mas no Access leva mais do que três segundos!!!