Einzelnen Beitrag anzeigen

Morphie

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

AW: Doppel-Select-Anweisung zu langsam

  Alt 5. Feb 2013, 14:32
So, Enterprise Server heruntergeladen und installiert.

Seltsamerweise ist der sogar noch langsamer als der Community-Server.
Ich habe den SQL-Dump also ganz frisch auf dem Enterprise-Server eingelesen. Keine Daten(banken) übernommen!

Vorsichtshalber habe ich die Abfrage gleich 3x hintereinander durchgeführt:
Zitat:
SELECT SUM(POSITIONEN.MENGE) FROM POSITIONEN INNER JOIN BELEGE ON (POSITIONEN.BELEGNR = BELEGE.BELEGNR) WHERE POSITIONEN.ARTIKELNR = '1090213000' AND BELEGE.BELEGART = 'A' ;
/* 0 rows affected, 1 rows found. Duration for 1 query: 9,048 sec. */

SELECT SUM(POSITIONEN.MENGE) FROM POSITIONEN INNER JOIN BELEGE ON (POSITIONEN.BELEGNR = BELEGE.BELEGNR) WHERE POSITIONEN.ARTIKELNR = '1090213000' AND BELEGE.BELEGART = 'A' ;
/* 0 rows affected, 1 rows found. Duration for 1 query: 15,538 sec. */

SELECT SUM(POSITIONEN.MENGE) FROM POSITIONEN INNER JOIN BELEGE ON (POSITIONEN.BELEGNR = BELEGE.BELEGNR) WHERE POSITIONEN.ARTIKELNR = '1090213000' AND BELEGE.BELEGART = 'A' ;
/* 0 rows affected, 1 rows found. Duration for 1 query: 11,841 sec. */
Ich habe mir mal den Ausführungsplan anzeigen lassen
MySQL Enterprise:
Code:
id  select_type  table       type    possible_keys              key        key_len   ref                            rows    filtered  Extra
1   SIMPLE       POSITIONEN  ref     PRIMARY,artikelnr,belegnr  artikelnr  53        const                          16160   100.00    Using where
1   SIMPLE       BELEGE      eq_ref  PRIMARY,belegart           PRIMARY    52        POSITIONEN.belegnr             1       100.00    Using where
MariaDB:
Code:
id  select_type  table       type    possible_keys              key        key_len   ref                            rows    filtered  Extra
1   SIMPLE       POSITIONEN  ref     PRIMARY,artikelnr,belegnr  artikelnr  53        const                          16160   100.00    Using index condition
1   SIMPLE       BELEGE      eq_ref  PRIMARY,belegart           PRIMARY    52        POSITIONEN.belegnr             1       100.00    Using where
MariaDB macht also irgendwas anders als MySQL.
Kann man dieses Verhalten MySQL beibringen? ("USE INDEX" oder ähnliches?)
  Mit Zitat antworten Zitat