phpbar.de logo

Mailinglisten-Archive

query optimieren

query optimieren

Michael Donning donning at informenta.de
Mon Mar 31 09:29:27 CEST 2003


Hallo Niko,

> -----Original Message-----
> From: Nikolas Hagelstein [mailto:hagelstein at hauptsache.net]
> SELECT a.artnr_neu, a.wbez, h.name, a.okat, a.ukat, a.vk,
> IF (
> a.kurz != '', 1, 0
> ) AS iskurz,
> IF (
> a.lang != '', 1, 0
> ) AS islang,
> IF (
> ia.imgid IS NULL , 0, 1
> ) AS isimg,
> IF (
> pa.pid IS NULL , 0, 1
> ) AS isprof, rt.rank
> FROM artdata a
> LEFT JOIN hersteller h ON a.hersteller = h.id
> LEFT JOIN img_to_art ia ON a.artnr_neu = ia.artnr
> LEFT JOIN profkat_to_art pa ON a.artnr_neu = pa.artnr
> LEFT JOIN rankingtotal rt ON a.artnr_neu = rt.artnr
> GROUP BY a.artnr_neu
> ORDER BY rt.rank DESC
> LIMIT 0,15

Tödlich ist ersteinmal ein Order By mit einem Feld einer referenzierten
Tabelle (rt.rank). Eventuell ist es sinnvoll bestimmte infos per batch-lauf
(z.B. einmal nachts als Cron-Job) zu bestimmen und in den Artikelsatz zu
"kopieren". Dazu würde ich den Rang und sämtliche Felder zählen, die Du per
IF bestimmst. D.h. im Artikelstamm gäbe es dann Felder wie "cp_rank,
cp_has_img, cp_has_pa".

Dann sollte man ein Group nicht auf ArtNr neu sondern auf cp_rank und
art_nr_neu machen und auf diesen beiden Felder auch gleich einen
kombinierten Index legen.

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