Avatar billede groyk Novice
12. februar 2013 - 20:46 Der er 4 kommentarer og
1 løsning

Optimer langsom forespørgsel

Hej Eksperter jeg har en Query der kører virkelig langsom.

Meningen er at trække ordreinformationer fra en tabel og summere ordresummen fra en anden tabel. (varetabellen)

Den metode jeg bruger i dag ser således ud, men er extremt langsomt.!

Kan syntaxen optimeres, eller er det bare at vente.


SELECT *,
(SELECT SUM(line_total) FROM `sales_order_items` WHERE sales_order_items.sales_order_id=sales_order.sales_order_id) AS total
FROM `sales_order`
Avatar billede acore Ekspert
12. februar 2013 - 21:39 #1
Hvad med (ikke testet!):

SELECT so.*, SUM(si.line_total) AS total FROM sales_order_items AS si
LEFT JOIN sales_order AS so USING(sales_order_id) GROUP BY si.sales_order_id
Avatar billede arne_v Ekspert
12. februar 2013 - 22:16 #2
Ert der index paa de felter du joiner paa?
Avatar billede groyk Novice
13. februar 2013 - 06:44 #3
acore
Det hjalp en hel del, takker. (Venligst smid et svar)

arne_v
Ja der er index på de felter der joines. Jeg antager at der naturligvis ikke skal være det på si.line_total
Avatar billede groyk Novice
13. februar 2013 - 06:48 #4
Når forespørgslen laves på denne måde, vil jeg så få ordre med der IKKE har nogle varelinier?
Avatar billede acore Ekspert
13. februar 2013 - 08:40 #5
Godt det hjalp!

Du får ikke ordrer med, der ikke har nogen varelinier. Hvis du vil have dem med, bliver det noget med:

SELECT so.*, SUM(si.line_total) AS total FROM sales_order AS so
LEFT JOIN sales_order_items AS si USING(sales_order_id) GROUP BY si.sales_order_id
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester