MySQL Forums
Forum List  »  German

Re: Performance bei SELECT
Posted by: Thomas Wiedmann
Date: January 26, 2012 12:57AM

Hallo Mark,

na wenn ich den SQL so sehe, kann man nur stauen, dass der MySQL Parser da noch durchblickt und etwas Sinnvolles dabei rauskommt. Aber Spaß beiseite, der SQL ist so kaum noch pflegbar. Zudem hast Du in der Gesamtabfrage ebenfalls das GROUP BY Problem mit einigen Spalten. Per Definition müßten alle Spalten (ausser items.Brand ) mit einer Aggregatfunktion versehen werden, also MIN(), MAX(), AVG() oder was auch immer.., ansonsten gibt es eventuell unerwartete Ergebnisse
SELECT 

 items.ItemNrSupplProduct, 
 items.attr_special_price as ItemSpecialPrice,
 attr_special_from_date,
 items.attr_royalties,
 invoicelines.OrderQty,
 FullPrice,
 SUM(FullPrice) AS total,
 items.attr_image,
 items.ItemNrInt,
 items.Parent,
 items.ItemNrSuppl,
 items.ItemNrSupplProduct,
[...]
GROUP BY items.Brand 
HAVING  stockValue > '0'

Ein kleiner Hinweis: "stockValue" ist numerisch und wird mit einem String verglichen. Es genügt:
[...]
GROUP BY items.Brand 
HAVING  stockValue > 0

Weiterhin solles Du bei Gelegenheit die Befehle "||" auf OR und "&&" auf AND umstellen OR und AND sind SQL-Standard. || und && werden von MySQL zwar unterstützt, aber gehören eigentlich eher zur Programmeben.

Die Berechnung mit dem PhysicalStock ist zig-mal vorhanden, dass sollte besser in einen JOIN ausgelagert werden.
[...]
     SELECT SUM(items_stock.PhysicalStock)
       FROM items_stock 
      WHERE items_stock.ItemNrInt = items.ItemNrInt  
        AND  (items_stock.locationID = '001' OR items_stock.locationID = '002' ) 
[...]



Ich denke das Gesamtkonzept des Query ist falsch bzw. das Datenmodell suboptimal. Im ersten Schritt würde ich die ganzen Rechenoperationen erst einmal entfernen und diese in das Programm oder in ein MySQL Stored Procedure verlegen. Das Hauptproblem ist, die Datenmenge aus invoicelines zu reduzieren.

Wie sieht eigentlich der EXPLAIN zu dem Gesamtquery aus?

Grüße
Thomas

Options: ReplyQuote


Subject
Views
Written By
Posted
2611
January 19, 2012 07:17AM
1457
January 19, 2012 12:59PM
1526
January 20, 2012 05:33AM
1741
January 20, 2012 06:10AM
1469
January 20, 2012 07:06AM
1481
January 20, 2012 12:11PM
1443
January 25, 2012 04:11AM
1309
January 25, 2012 04:24AM
1362
January 25, 2012 04:30AM
1290
January 25, 2012 04:49AM
1124
January 25, 2012 06:05AM
1412
January 25, 2012 06:37AM
1389
January 25, 2012 07:46AM
Re: Performance bei SELECT
1472
January 26, 2012 12:57AM
1368
January 25, 2012 11:11PM
1242
January 25, 2012 11:50PM
1149
January 27, 2012 08:27AM
1542
January 27, 2012 06:21AM
1382
February 02, 2012 10:06PM
1094
February 03, 2012 05:34AM
1347
February 03, 2012 02:04PM
1277
February 08, 2012 09:52PM
1322
February 09, 2012 08:41AM
1233
February 10, 2012 02:03AM
1483
February 10, 2012 02:52AM
1379
February 10, 2012 04:51AM
1345
February 09, 2012 11:58PM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.