Visa ett inlägg
Oläst 2005-05-04, 16:27 #19
StefanBergfeldts avatar
StefanBergfeldt StefanBergfeldt är inte uppkopplad
Bara ett inlägg till!
 
Reg.datum: Sep 2004
Inlägg: 1 535
StefanBergfeldt StefanBergfeldt är inte uppkopplad
Bara ett inlägg till!
StefanBergfeldts avatar
 
Reg.datum: Sep 2004
Inlägg: 1 535
Citat:
Som den trasiga skiva jag är tycker jag fortfarande att det låter mycket med 2minutyer för att öppna och skriva lite text i några filer.
Inte några textfiler, 8000 textfiler. När jag istället skrev all info i samma textfil blev tidsåtgången istället ca 5 sekunder.

Det är därför jag nu har skapat en XML-fil av det hela. Första tanken var att göra eml-filer direkt, men eftersom detta tog lite tid, gör jag alltså En fil först. Utifrån denna täkner jag nu skicka mailet. Urvalet är nog bland det klumpigaste, men information ska hämtas om VAD kunderna har handlat, när, för hur mycket, hur ofta, och vart varorna levererats, och tiderna jag anger här är från tester på en separat testserver, som kör både webb och sql på samma. Dessutom är den rätt gammal.

SQL-uttrycket som tar så lång tid ser ut så här:
Citat:
SELECT DISTINCT email, firstname+' '+lastname FROM tb_shopper WHERE (registrationdate BETWEEN '1900/01/01' AND '5/4/2005' AND shopper_id IN (SELECT shopper_id FROM tb_order WHERE ordertype = 'GROCERY' AND orderstatus_id BETWEEN 2 AND 9 AND orderdate BETWEEN '1900/01/01' AND '5/4/2005' GROUP BY shopper_id HAVING Count(order_id) >= 1 AND Count(order_id) <= 9999) AND shopper_id IN (SELECT shopper_id FROM tb_order WHERE ordertype = 'GROCERY' AND orderstatus_id BETWEEN 2 AND 9 AND orderdate BETWEEN '1900/01/01' AND '5/4/2005' GROUP BY shopper_id HAVING Sum(totalprice/100) >= 0 AND Sum(totalprice/100) <= 999999) AND shopper_id IN (SELECT shopper_id FROM tb_shopper WHERE delpostcode BETWEEN '0' AND '99999') ) OR shopper_id IN (SELECT shopper_id FROM tb_order WHERE ordertype = 'EL') OR shopper_id IN (SELECT shopper_id FROM tb_order WHERE ordertype = 'TELE') OR shopper_id IN (SELECT shopper_id FROM tb_order WHERE ordertype = 'OIL') AND email IS NOT NULL AND email <> '' AND spam = 1 AND paymentmethod_id = 1
StefanBergfeldt är inte uppkopplad   Svara med citatSvara med citat