Mailinglisten-Archive |
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