phpbar.de logo

Mailinglisten-Archive

AW: AW: Auf Referenz pruefen

AW: AW: Auf Referenz pruefen

Cybot lists at sebastianmendel.de
Mit Aug 13 14:17:59 CEST 2003


Nikolas Hagelstein wrote:

> Hi,
> 
>>schick doch bitte trotzdem mal das EXPLAIN dazu
> 
> siehe unten.
> 
> 
>>(aber bitte mit leerzeichen anstelle von tabs, damits auch wirklich
>>überall gleich aussieht (ich habe monospace, nur tabs werden wohl anders
>>dargestellt))
> 
> 
> upps sorry eigentlich wollte ich auch keine tabs benutzen
> hier nochmal der relevante teil in clean :)
> 
> 
> 
> struktur :
> --------------------------------------------------
> artikeltbl            AtoB                bildtbl
> 
> -------------     -------------      -------------
> |  artnr    |---> |  artref   |  .-> |    bid    |
> --------------    ------------   |   -------------
> |bezeichnung|     |  bildref  | -´   |    file   |
> -------------     -------------      -------------
> |  Preis    |                        |    type   |
> -------------                        -------------
> ---------------------------------------------------
> 
> query:
> SELECT a.*,if(ab.bildref is NULL,0,1) AS hasbild
> FROM artikel a
> LEFT JOIN AtoB ab ON  a.artnr=ia.artref
> GROUP BY a.artnr
> ORDER BY a.bezeichnung LIMIT 0,10
> 
> 
> exlain dazu (hoffen man kanns lesen)
> 
> table   | type | possible_keys | key    | key_len | ref | rows | Extra |
> ------------------------------------------------------------------------
> artikel | ALL  |NULL           |NULL    |     NULL|NULL | 19201|Using
> temporary; Using filesort
> ba      | ref  |PRIMARY,artnr  |PRIMARY |       14|artnr|    54|Using index

dein problem dürfte das order by sein, ohne dieses dürfte sich sich das 
query im millisekunden-bereich bewegen

da du die sortierung aber brauchst solltest du versuchen bereits im 
where deine ergebnisse einzuschrenken

z.b. 'where artnr between 10 and 100' beschleunigt dein query schon ungemein

ein 'where bezeichung like 'a%'' oder ähnlich bringt auch etwas vorteile 
is aber wohl immer noch relativ langsam

ich kenne deine anwednung nicht und kann deshalb auch hier nix weiter zu 
sagen, aber probier mal ein wenig mit dem where rum!

in deinem fall gibt es wohl die möglichkeit durch alle artikel 
seitenweiße durchzublättern, du solltest das auf kategorien oder 
anfangsbuchstaben begrenzn, kannst ja am ende eines buchstaben 
automatisch zum nächsten springen, dann mahcts für den user kein 
unterschied ...  so ähnlich wurde das damals aber glaube ich auch schon 
vorgeschlagen ...

-- 
Sebastian Mendel

www.sebastianmendel.de
www.tekkno4u.de
www.nofetish.com

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


php::bar PHP Wiki   -   Listenarchive