Einzelnen Beitrag anzeigen

Morphie

Registriert seit: 27. Apr 2008
Ort: Rahden
630 Beiträge
 
#17

AW: Doppel-Select-Anweisung zu langsam

  Alt 5. Feb 2013, 10:37
@MAriaDB
Mmh, ich arbeite nicht produktiv mit mySQL. Aber die Erfahrung zeigt: Jedes RDBMS hat seine Schwächen, das sind ganz selten harte Fehler bei der SQL Auswertung, aber häufig "obskures" Verhalten der Optimizer.
Glaub mir, wir saßen Tagelang dabei, die SQL-Abfrage zu optimieren.
Wir haben am Ende sogar ganz perverse Dinge versucht (IIFs anstatt Wheres,...) doch letztendlich war es definitiv ein Problem von MySQL.

Wir waren auch ziemlich erstaunt, dass ein Fork so viel schneller ist.
Btw. nachdem wir die Kunden auf MariaDB umgestellt haben, lief das gesamte Programm auch merklich schneller. Der Geschwindigkeitszuwachs beschränkt sich also nicht nur auf diese eine Abfrage!
Wir sind seitdem begeistert... Vor allem weil es auch wirklich schnell umgestellt ist.

Edit:
Hier mal das SQL-Statement:
Code:
SELECT SUM(POSITIONEN.MENGE)
FROM POSITIONEN INNER JOIN BELEGE ON (POSITIONEN.BELEGNR = BELEGE.BELEGNR)
WHERE POSITIONEN.ARTIKELNR = '1090213000' AND BELEGE.BELEGART = 'A'
Unter MySQL: /* 0 rows affected, 1 rows found. Duration for 1 query: 7,753 sec. */
Unter MariaDB: /* 0 rows affected, 1 rows found. Duration for 1 query: 0,078 sec. */

Belegart, Artikelnr und Belegnr sind natürlich indiziert.

Geändert von Morphie ( 5. Feb 2013 um 11:10 Uhr)
  Mit Zitat antworten Zitat