phpbar.de logo

Mailinglisten-Archive

Join mit langer Laufzeit: Index gesucht

Join mit langer Laufzeit: Index gesucht

Ruediger Weiss ruediger_weiss@web.de
Mon Nov 4 16:06:48 2002


Hallo Liste,
ich habe einen Join mit langer Laufzeit (>6 Sekunden) 
trotz nicht allzu grossem Datenvolumen (Tabelle a: 992 DS, Tabelle b: 1196 DS).
Leider bin ich anscheinend nicht in der Lage, einen Index auf Tabelle a zu formulieren,
der die Laufzeit verkürzt.

explain select a.ARTIKELID, MEMBERID FROM ARTIKEL a
left outer join STRUKTUR b
on a.ARTIKELID=b.MEMBERID
and  b.KATALOGID = 1
and b.STATUS = 'A'
where a.KATALOGID = 1
and a.LOKZ not in ('X')
and a.AKTIV = 'X'
and
(
        (
                (a.GUELVON / 1) <=20021104
                and (a.GUELBIS / 1) >=20021104
                and (a.SONDER in ('n')
                or a.SONDER is null)
        )
        or
        (
                (a.SGUELBIS / 1) >=20021104
                and (a.SGUELVON / 1) <=20021104
                and a.SONDER in ('j')
        )
)

Explain ergibt folgendes Bild:

table   type    possible_keys   key     key_len ref     rows    Extra
a       ALL     ARTIKELZUGRIFF  NULL    NULL    NULL    992     where used
b       ref     STATUSINDEX     STATUSINDEX     2       const   10

Der Index auf b scheint also in Ordnung z usein (war ja auch einfach) ...

Der Index ARTIKELZUGRIFF auf a, der keine Laufzeitverbesserung bringt, geht über die Felder 
a.KATALOGID, a.LOKZ, a.AKTIV und a.SONDER

Hat jemand eine Idee? Oder liegt die lange Laufzeit lediglich daran, dass in zwei der WHERE Bedingungen ein CHARfeld zum Vergleich mit einer Zahl konvertiert werden muss ?

Freue mich über gute Ideen,
Viele Grüße,
Rüdiger
________________________________________________________________
Keine verlorenen Lotto-Quittungen, keine vergessenen Gewinne mehr! 
Beim WEB.DE Lottoservice: http://tippen2.web.de/?x=13


-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive