mysql select - kostet unendlich zet

  • Hallo,

    in einer Anwendung kommt es seit heute Mittag zu langen Wartezeiten bis die Daten für den nächsten Artikel angezeigt werden. Die Ursache liegt in folgendem Select:

    SELECT DISTINCT nr_artikel FROM ebay_angebote WHERE nr_artikel is NOT NULL and aktiv='ja' AND (folder = 1 OR folder = 2 OR folder = 4 OR folder = 12)

    Diese Abfrage dauert ca. 30 Sekunden

    Nimmt aus der Abfrage den Wert "folder = 2" heraus, also
    SELECT DISTINCT nr_artikel FROM ebay_angebote WHERE nr_artikel is NOT NULL and aktiv='ja' AND (folder = 1 OR folder = 4 OR folder = 12)

    so dauert die Abfrage 1,5 sekunden

    Ebenso umgekehrt, wenn nur der Wert "folder = 2 " in der Abfrage enthalten ist, also
    SELECT DISTINCT nr_artikel FROM ebay_angebote WHERE nr_artikel is NOT NULL and aktiv='ja' AND folder = 2

    Auch hier dauert die Abfrage ca. 1 Sekunde

    Alle sonstigen Prozesse wurden abgeschaltet.

    Hat irgendjemand so eine Situation schon einmal gehabt?

    Irgendeine Idee, wo das Problem liegen könnte?

    Danke für eure Antwort

  • Code
    Einmalig:
     CREATE INDEX search1 ON ebay_angebote (nr_artikel, aktiv, folder);
    
    
    
    
    SELECT nr_artikel FROM ebay_angebote WHERE nr_artikel IS NOT NULL AND aktiv='ja' AND folder IN (1, 2, 4, 12) GROUP BY nr_artikel;

    damit sollte das ganze nur noch im ms bereich liegen.

  • danke.

    es liegen jeweils einzelen Indexe auf den Feldern nr_artikel, aktiv, folder.

    Ist es sinnvoller einen gemeinsamen anzulegen?
    Und wie verhält sich mysql wenn es mehrere Indexe zu einem Feld gibt (einzeln und gruppiert?