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é.