Bonjour Tout le monde,
J'utilise sql server 2008, j'ai un souci sur un between de date.
Mon probleme est le suivant, j'avais une requete qui m'afficher les données entre deux dates, ces dates sont récupérées dans une table, le type des colonnes est datetime. la requete met moins d'une seconde.jusqu'à la tout va bien. Cette requete est inserer dans procedure stockées. voir req1
le besoin a evolué et maintenant les dates doivent etre passées en parametre. c'est ce que j'ai fait sur la req2, mais la requete met 1 min pour afficher le resultat pour les mêmes dates utiliser dans la req1.
quelqu'un aurait il une solution pour ameliorer mes temps de réponses
req1:
req2:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 select distinct sect.lg_nomparent lg_nomparent,count(distinct t.AccountId) nb,convert (nvarchar(max),ouv.lg_datededebut,112), COUNT(DISTINCT cr.lg_compterenduid) AS nbr_CR,convert (nvarchar(max),ouv.lg_datedefin,112) --into #J from Lg_compterendu cr inner JOIN lg_systemuser_lg_compterendu AS cr_usr ON cr_usr.lg_compterenduid = cr.lg_compterenduid inner JOIN SystemUser AS usr ON usr.systemuserid = cr_usr.systemuserid inner join lg_lg_pole_systemuser pole_usr on pole_usr.systemuserid=usr.systemuserid inner join Lg_pole pole on pole_usr.lg_poleid=pole.lg_poleid inner join lg_marque_lg_compterendu marq_cr on marq_cr.lg_compterenduid=cr.lg_compterenduid inner join Lg_marque marq on marq.lg_marqueid=marq_cr.lg_marqueid inner join lg_contact_lg_compterendu cont_cr on cont_cr.lg_compterenduid=cont_cr.lg_compterenduid inner join Contact cont on cont.contactid=cont_cr.contactid inner join Lg_ouvertureterrainsdejeu ouv on ouv.lg_commercial=usr.systemuserid,Account acc INNER JOIN Lg_terraindejeu AS terrain ON terrain.lg_annonceur = acc.accountid inner join (select tot.AccountId,tot.lg_client from ( select AccountId,AccountId lg_client from account a union select v.lg_tiersdefacturation AccountId,lg_client from Lg_tiersdefacturation v) tot) t on acc.AccountId=t.lg_client inner join Lg_secteurdactivite sect on sect.lg_secteurdactiviteid=terrain.lg_secteurdactivite where marq.lg_client=t.accountid and cr.lg_compterenduid=cont_cr.lg_compterenduid and terrain.lg_commercial=usr.systemuserid and cont.lg_fonctionlp in( '29','19','16') and convert(nvarchar(max),cr.lg_daterdv,112) BETWEEN convert (nvarchar(max),ouv.lg_datededebut,112) AND convert (nvarchar(max),ouv.lg_datedefin,112) and pole.lg_poleid='9B5092D3-7774-DF11-9725-00505684640D' group by sect.lg_nomparent,convert (nvarchar(max),ouv.lg_datededebut,112),convert (nvarchar(max),ouv.lg_datedefin,112) HAVING COUNT(DISTINCT cr.lg_compterenduid) >= 1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 select distinct sect.lg_nomparent lg_nomparent,count(distinct t.AccountId) nb,convert (nvarchar(max),ouv.lg_datededebut,112), COUNT(DISTINCT cr.lg_compterenduid) AS nbr_CR,convert (nvarchar(max),ouv.lg_datedefin,112) --into #J from Lg_compterendu cr inner JOIN lg_systemuser_lg_compterendu AS cr_usr ON cr_usr.lg_compterenduid = cr.lg_compterenduid inner JOIN SystemUser AS usr ON usr.systemuserid = cr_usr.systemuserid inner join lg_lg_pole_systemuser pole_usr on pole_usr.systemuserid=usr.systemuserid inner join Lg_pole pole on pole_usr.lg_poleid=pole.lg_poleid inner join lg_marque_lg_compterendu marq_cr on marq_cr.lg_compterenduid=cr.lg_compterenduid inner join Lg_marque marq on marq.lg_marqueid=marq_cr.lg_marqueid inner join lg_contact_lg_compterendu cont_cr on cont_cr.lg_compterenduid=cont_cr.lg_compterenduid inner join Contact cont on cont.contactid=cont_cr.contactid inner join Lg_ouvertureterrainsdejeu ouv on ouv.lg_commercial=usr.systemuserid,Account acc INNER JOIN Lg_terraindejeu AS terrain ON terrain.lg_annonceur = acc.accountid inner join (select tot.AccountId,tot.lg_client from ( select AccountId,AccountId lg_client from account a union select v.lg_tiersdefacturation AccountId,lg_client from Lg_tiersdefacturation v) tot) t on acc.AccountId=t.lg_client inner join Lg_secteurdactivite sect on sect.lg_secteurdactiviteid=terrain.lg_secteurdactivite where marq.lg_client=t.accountid and cr.lg_compterenduid=cont_cr.lg_compterenduid and terrain.lg_commercial=usr.systemuserid and cont.lg_fonctionlp in( '29','19','16') and convert(nvarchar(max),cr.lg_daterdv,112) BETWEEN '20090831' AND '20100830' and pole.lg_poleid='9B5092D3-7774-DF11-9725-00505684640D' group by sect.lg_nomparent,convert (nvarchar(max),ouv.lg_datededebut,112),convert (nvarchar(max),ouv.lg_datedefin,112) HAVING COUNT(DISTINCT cr.lg_compterenduid) >= 1
Partager