Fórum Otimizaçao de consulta em ADO #325222
12/07/2006
0
Obrigado!
Curynga
Curtir tópico
+ 0Posts
12/07/2006
Bon Jovi
Se quer apenas percorrer os registros de forma unidirecional, use o tipo de cursor ctOpenForwardOnly (necessario Location = clServer). Ex.:
ADODataSet1.Close; ADODataSet1.CursorLocation := clUseServer; ADODataSet1.CursorType := ctOpenForwardOnly; ADODataSet1.LockType := ltReadOnly; ADODataSet1.ParamCheck := False; //só no caso de nao ter parametros ADODataSet1.DisableControls; ADODataSet1.CommandText := ´select CategoryID, CategoryName from Categories´; ADODataSet1.Open; try while not ADODataSet1.Eof do begin ListBox1.Items.Add(ADODataSet1CategoryID.AsString); ADODataSet1.Next; end; finally ADODataSet1.Close; end;
Qdo se usa CursorLocation Server é recomendável sempre fechar assim que terminado o uso interno, sem deixar aberto pro usuário.
Gostei + 0
12/07/2006
Bon Jovi
Gostei + 0
13/07/2006
Curynga
SUM(ld.vr_lan) as Rendimento
FROM CDJ_DEPOSITO d
JOIN CDJ_LANCAMENTO_DEPOSITO ld ON
(ld.cod_ban = d.cod_ban
AND ld.cod_age = d.cod_age
AND ld.num_cdj = d.num_cdj
AND ld.num_dep = d.num_dep)
WHERE d.cod_ban_ori = FloatToSQL(pCodBan)
AND d.cod_age_ori = FloatToSQL(pCodAge)
AND d.num_cdj_ori = FloatToSQL(pNumCdj)
AND d.num_dep_ori = FloatToSQL(pNumDep)
AND ld.cod_his_lan_dj IN (4,5)
AND ld.dat_lan = DateToSQL(pDatLan)
GROUP BY ld.cod_ban, ld.cod_age, ld.num_cdj, ld.num_dep, ld.dat_lan
A consulta é essa que estou fazendo, e estou passando os parametros daquela forma para evitar o proprio parametro do componente.
Não vi alteraçoes que poderiam ser feitas e já alterei juntamente com o DBA alguns indices.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)