optimisation d'une requete
Bonjour
j'ai écrit ce petit bout de code pour afficher les 500 derniers enregistrements d'une table qui en compte 80000.
j'utilise une requete pour calculer le nombre max de ligne et je me sers de ce nombre dans la 2ème requete pour utiliser le fonction rows .
ce fonctionne bien mais je voudrais savoir si il est possible d'optimiser ce code en une seule requete ?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
procedure TForm2.Button1Click(Sender: TObject);
var
com:integer;
begin
ibquery1.close;
ibquery1.SQL.Clear;
ibquery1.SQL.Add('select count(*) as nb from cmdsup');
ibquery1.Open;
com:=ibquery1.FieldByName('nb').AsInteger;
ibquery1.close;
ibquery1.SQL.Clear;
ibquery1.SQL.Add('select * from cmdsup');
ibquery1.SQL.Add('order by id_cmdsup asc ');
ibquery1.SQL.Add('rows :com - 500 to :com');
ibquery1.ParamByName('com').AsInteger:=com;
ibquery1.Open;
end; |
au début pour faire simple j'avais fait comme ceci:
Code:
1 2 3 4 5 6 7
|
ibquery1.close;
ibquery1.SQL.Clear;
ibquery1.SQL.Add('select * from cmdsup');
ibquery1.SQL.Add('order by id_cmdsup desc ');
ibquery1.SQL.Add('rows 500');
ibquery1.Open; |
mais les utilisateurs n'aiment pas l'ordre de classement.
Ils préfèrent avoir un classement du "haut vers le bas" dans une grille
cordialement