Normal que ca mette autant de temps pour le calcul
Pour ma part je te dirais de tout refaire car la c'est très mal parti, et ca va être de pire en pire à chaque fois que tes tables vont prendre du volume.
Si la requête dans ton calcfield mets 10s ca va être 10s * par le nombre de lignes affichées par le DbGrid, une catastrophe en clair
CalcField -> Bien pour de petit calcul rapide mais il faut éviter des requêtes couteuse en ressource.
TxxxTable -> Bien quand les tables dépassent pas les 500-1000 enregistrements, au dessus, vaut mieux passer par des requêtes avec critères sélectifs.
Parfois il est plus rapide de casser ce qui a été fait, que de l'adapter et de rajouter des coquilles dans le programme.
Sinon une petite optimisation au niveau de la requête
1 2 3 4 5 6 7 8 9 10 11 12
|
With qtemp do
begin
close;
SQL.Add('Select distinct t.id_chr_tiers as TIERS ,t.c_siege as SIEGE , ');
SQL.Add('c_segment_clientele, tx_rsquared ');
SQL.Add('from chr_tiers as T inner join chr_autorisation as A on T.id_chr_tiers=A.id_chr_tiers');
SQL.Add('where T.id_chr_tiers='+quotedstr(ADOTable_CHRTiersID_CHR_TIERS.Value));
SQL.Add('and A.c_modele<>''N/A'' ');
Prepared:=true;
Open;
end; |
Tu gagneras quelques millisecondes en utilisant un
inner join qui est optimisé pour cela
Partager