Recalculer la sélectivitité des index
By philippe on Sunday 9 March 2008, 17:34 - Firebird other - Permalink
Quelques fois il peut être utile de forcer le moteur à recalculer la sélectivité des index afin de permettre à l'optimiseur de choisir des meilleurs plans de requête et donc de faire les traitements plus rapidement
Voici une procédure permettant de recalculer la selectivité de tous les index
SET TERM ^;
CREATE PROCEDURE SP_CALCSELECTIVITY
AS
DECLARE VARIABLE IDX VARCHAR(50);
DECLARE VARIABLE STMT VARCHAR(75);
BEGIN
FOR
SELECT RDB$INDEX_NAME
FROM RDB$INDICES
INTO :IDX
DO
BEGIN
STMT = 'SET STATISTICS INDEX ' || :IDX;
EXECUTE STATEMENT :STMT;
END
END
^
SET TERM ;^
Ensuite il suffit de faire :
EXECUTE PROCEDURE SP_CALCSELECTIVITY;
Bein sûr il est préférable de faire cela à un moment où le serveur n'est pas trop occupé.