Bonjour,
J'ai 3 requêtes assez compliqués mais relativement similaires.
De base, elles étaient sous Access 2000 et je dois les migrer vers SQL server.
Mes 3 requêtes fonctionnent parfaitement sous Access, mais seul la première fonctionne bien sous SQL server.
Les deux autres mettent plus de 2min à s'éxécuter quand je les test dans SQL server même (alors que je les test sans la clause where qui est encore plus longue).
Après réflexion, j'en suis arrivé à la conclusion que ce que SQL server aimait pas dans mes deux requêtes, c'est le left join sur une fonction (dans la premiere requête c'est un inner join)...
Je vois pas trop comment passez outre (à part en reconstruisant tout du début mais ça me prendrait vraiment beaucoup de temps...)
Ma requête qui fonctionne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 SELECT ... FROM f_disporeport_export_Q_REPORT_RH_NB_H_RH(@txtdtdebut,@txtdtfin) as Q_REPORT_RH_NB_H_RH inner join W_REPORT_RH_NB_H_DISPO ON (Q_REPORT_RH_NB_H_RH.[#CODCDE] = W_REPORT_RH_NB_H_DISPO.[#CODCDE] AND Q_REPORT_RH_NB_H_RH.[#CODPERAG] = W_REPORT_RH_NB_H_DISPO.[#CODPERAG] AND Q_REPORT_RH_NB_H_RH.[DATEPLANNING] = W_REPORT_RH_NB_H_DISPO.[DATEPLANNING] AND Q_REPORT_RH_NB_H_RH.[#CODTJ] = W_REPORT_RH_NB_H_DISPO.[#CODTJ]) inner join T_INTERIM ON (W_REPORT_RH_NB_H_DISPO.[#CODPERAG]= T_INTERIM.CODPERAG) inner join T_SUIVICDE ON (T_INTERIM.CODPERAG = T_SUIVICDE.[#CODPERAG]) inner join T_COMMANDE ON (T_SUIVICDE.[#CODCDE] = T_COMMANDE.CODCDE AND W_REPORT_RH_NB_H_DISPO.[#CODCDE] = T_COMMANDE.CODCDE) inner join T_CLIENT ON (T_COMMANDE.[#CODCLIAG] = T_CLIENT.CODCLIAG) LEFT JOIN [T-SERVICECLI] ON ([T-SERVICECLI].CLEF = T_COMMANDE.[#CLEF] AND [T-SERVICECLI].CODCLIAG = T_COMMANDE.[#CODCLIAG])
les deux autres sont similaires dans la clause FROM mais avec un right/left join sur la fonction f_disporeport_export_Q_REPORT_RH_NB_H_RH à la place d'un inner..
Voilà, si vous pouviez 'm'orienter' un peu sur la marche à suivre parce que là j'ai la tête qui va exploser et j'avance plus
Merki
Partager