Bonjour tout le monde,
J'utilise Delphi pour interroger une base de données Firebird et à un moment donné, j'ai besoin de connaitre la valeur maximale d'un champ.

J'ai donc une requête

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
SELECT MAX(NO_ID) FROM MATABLE
que j'exécute dans le programme Delphi.

J'ai également essayé de faire une procédure stockée dans la BDD Firebird

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
CREATE PROCEDURE MAX_ID_TABLE
RETURNS(
  MAX_ID INTEGER)
AS
BEGIN
  /* Procedure body */
  SELECT MAX(NO_ID)
  FROM MATABLE
  INTO :MAX_ID;
  EXIT;
END;
L'une et l'autre des solutions fonctionnement parfaitement bien mais mon problème vient de la rapidité d'exécution. La table que j'utilise étant assez grande (900'000 enregistrements environs) j'aimerais savoir si il y a un moyen plus rapide que "MAX()" pour retourner le plus grand ID de la table?.

Merci d'avance

PS. Un index est présent sur le champ NO_ID de ma table