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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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 :
1 | EXECUTE PROCEDURE SP_CALCSELECTIVITY; |
Bien sûr il est préférable de faire cela à un moment où le serveur n'est pas trop occupé.