phpbar.de logo

Mailinglisten-Archive

Auf Referenz pruefen

Auf Referenz pruefen

Michael Donning donning at informenta.de
Mit Aug 13 13:04:46 CEST 2003


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