Mailinglisten-Archive |
Hallo Nikolas, > -----Original Message----- > From: Nikolas Hagelstein [mailto:hagelstein at hauptsache.net] > Die Liste soll sich nach allen Felder sortieren lassen. > > Das Query, was das ermittelt sieht also etwa so aus: > > SELECT a.*,if(ab.bildref is NULL,0,1) AS hasbild from Artikel > LEFT JOIN AtoB ab ON a.artnr=ab.artref > GROUP BY a.artnr > ORDER BY blabla > LIMIT $start,$perpage > > > Problem ist, das durch das Group by das query extrem lahm wird > (ca. 5-8 sec. bei 16000 artikel und 4000 bildern). > Ich halte die Lösung, ein separates Feld hasbild in die Artikeltabelle aufzunehmen am sinnvollsten. Ein Script kann das in festen Wartungsintervallen z.B. als cron-job, oder auf Anforderung im Einzelfall wunderbar erledigen. Das ist zwar Redundant, aber spart evtl mächtig Zeit. Evtl. macht es Sinn gleich die Anzahl der Bilder anstatt 1/0 abzulegen. Ansonsten sehe ich in Deiner Query eine Unart, du verwendest ein Group By, aber keine Aggregatfunktionen. Andere DB's hätten Dir die Query z.T. schon um die Ohren geschlagen :). Bei den Artikelfeldern kann hier wohl nix schiefgehen (da ja nach der Art-Nr gruppiert wird) aber bei der If-Fkt sehe ich ein Problem. Ich schlage vor, über das if( noch ein max( zu legen. Aber das Group by fällt ja weg, wenn ein hasbild-Feld verfügbar ist. Grüße, Michael Donning -- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive