Ik ben een query aan het schrijven waarin ik verkoopgegevens van een bepaalde datumrange in dit jaar naast dezelfde datumrange vorig jaar leg. Query afgeschreven (so far, so good), maar nu join ik een tabel twee keer in deze query omdat ik hier de factuurgegevens uit haal van dit jaar en vorig jaar.
De query draait prima (2 sec) met de eerste join (alleen dit jaar), maar zodra ik de join voor de gegevens van vorig jaar toevoeg duurt het opeens 4 minuten! Iemand een idee hoe dit kan?
Voor de volledigheid hieronder de relevante sql-code:
De query draait prima (2 sec) met de eerste join (alleen dit jaar), maar zodra ik de join voor de gegevens van vorig jaar toevoeg duurt het opeens 4 minuten! Iemand een idee hoe dit kan?
Voor de volledigheid hieronder de relevante sql-code:
SQL:
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
| declare @artVan varchar , @artTm varchar , @classVan int , @classTm int , @boekjaar2 int , @datumVan datetime , @datumTm datetime set @artVan = '0' set @artTm = 'ZZZZZZ' set @classVan = 0 set @classTm = 999999 set @boekjaar2 = 2006 set @datumVan = '2007-01-01' set @datumTm = '2007-01-31' --EINDE TESTEN declare @datumVanVJ datetime , @datumTmVJ datetime set @datumVanVJ = cast(@boekjaar2 as varchar(4)) + '-' + cast(month(@datumVan) as varchar) + '-' + cast(day(@datumVan) as varchar) set @datumTmVJ = cast(@boekjaar2 as varchar(4)) + '-' + cast(month(@datumTm) as varchar) + '-' + cast(day(@datumTm) as varchar) --Select alle velden die nodig zijn... from Items it (nolock) left join -- FaktuurHistorie Huidig Jaar frhsrg as fhhj (nolock) on fhhj.artcode = it.ItemCode and fhhj.fakdat between @datumVan and @DatumTm left join -- FaktuurHistorie VergelijkingsJaar frhsrg as fhvj (nolock) on fhvj.artcode = it.ItemCode and fhvj.fakdat between @datumVanVJ and @datumTmVJ inner join frhkrg (nolock) on frhkrg.faknr = fhhj.faknr where it.ItemCode between @artVan and @artTm and it.Type not in ('P') and it.Class_02 in(select ItemClassCode from ItemClasses where ItemClassCode between @classVan and @classTm) group by it.ItemCode having sum( fhhj.esr_aantal ) is not null order by groep2, omzet desc, it.ItemCode |