-
Question sur les index
Bonjour,
je suis entrain de modifier une procedure stockée dans laquelle il a été créée une table tempo avec un index créé juste après la fin du create
ma modification a consisté en la modif de la clause where qui alimente la table tempo.
à l'exécution de la proc après modif elle prend 3 fois plus de temps
est-ce qu'il faut que je recréé l'index? sachant que ma modif sur la clause where est minime
merci
-
Bonjour,
il faudrait surtout créer l'index après avoir alimenté la table temporaire ;)
En effet, alimenter une table temporaire contenant déjà un index est beaucoup plus coûteux que de rajouter l'index par la suite.
Il faudrait donc, dans l'idéal aussi déplacer cette création d'index.
Note : pensez aussi à détruire l'index sur cette table avant de la supprimer dans la procédure stockée, car supprimer la table temporaire ne supprimera pas l'index automatiquement ;)
Cordialement,
-
j'ai déplacé l'instruction de création de l'index après l'alim de la table tempo mais il n'y a pas eu de changement l'execution est tjrs aussi longue.
Si quelqu'un a une idée??
-
Bonjour,
pour vous aider il nous faudrait l'ordre SQL ainsi que le plan d'exécution que l'on peut obtenir en ajoutant
Citation:
set showplan on
go
avant l'appel de la procédure.
-
En général un index ne sera pas automatiquement utilisé dans la proc où il a été créé (sauf en ASE 15.x).
Donc - soit il faut créer une sous-proc, soit il faut forcer l'index (et éventuellement forcer le plan).
Michael