phpbar.de logo

Mailinglisten-Archive

Performance noch steigerbars ?

Performance noch steigerbars ?

Henning Jödden nc-joeddehe at netcologne.de
Sam Feb 1 00:03:24 CET 2003


nabend,

zitiere Nikolas:
> folgendes Query hat bei mir eine laufzeit von 1.3 sec.
> SELECT awa.*,awe.wbez,awe.kurz FROM artdata_web awe,artdata_wavi awa  WHERE
> awa.artnr_neu=awe.artnr_neu and (awe.wbez LIKE '%xx%' OR awe.kurz LIKE
> '%xx%' OR awe.artnr_neu like '%xx%' OR awa.artnr_alt like '%xx%') ;

Es handelt sich bestimmt um eine Suche oder ?
ich hatte noch vor kurzem fast dasselbe Problem. Die LIKE's mit
wildcard vor *und* hinter den Suchbegriff sind Gift!
Ich habe mir so geholfen, das ich den "user" miteinbezogen habe. Ich
habe Ihm explizit die Möglichkeit gegeben mittels wildcard zeichen
(z.B. "*"), das Prozentzeichen selbst zu setzen, was mir von allen
Optimierungen (neben der richtigen indexierung) am meisten Zeit
rausgeholt hat. Und der Benutzer hat auch mehr Komfort ;)
Vielleicht als Lösungsansatz etwas konkret, aber denk mal drüber nach
ob sich die Möglichkeit anbietet.

> exlain gibt zurueck:
> awe ALL PRIMARY NULL NULL NULL 17586
> awa eq_ref PRIMARY PRIMARY 14 awe.artnr_neu 1 where used

EXPLAIN hab ich noch nicht ganz geschnallt ;) Versuche einfach mal die
Reihenfolge in der Du die Spalten aufzählst zu optimieren.

Dazu aus einem anderen Thread folgendes:
<alte zitate>
zitiere Sven Mueller:
> Angenommen g.ev_id wäre aus dem Bereich 1-5 und gleichverteilt (also Wert '5'
> mit einer Wahrscheinlichkeit von 20%). Zudem sei c.c_delete für nur 10% der
> Zeilen 'FALSE'. Dann solltest Du zuerst c.c_delete abfragen, und dann erst
> g.ev_id.
</alte zitate>

Will sagen: die Prozentuale Trefferquote mit der WHERE auf eine Spalte
greift sollte von links nach rechts absteigend sortiert werden.
Die Datenbank geht so vor, dass die zweite Bedingung schon nur noch
auf das angewendet wird was die erste Bedingung übrig lässt.
Und so geht das weiter...

> Sieh fuer mich aber so aus als wuerde keiner der schlussels benutzt. !?
Die Reihenfolge in der Du die Tabellen aufzählst spielt IMHO auch eine
Rolle. Durch simples vertauschen der Tabellenreihenfolge hat er bei
mir dann auf einmal sämtliche Schlüssel benutzt.
Das hat sich auch in der Geschwindigkeit bemerkbar gemacht.
Vielleicht hing das mit meiner Tabellenstruktur zusammen und bringt
bei dir garnichts, aber versuchen kannst Du es mal.

grüsse,
 Henning

PS: mich möge jemand korrigieren wenn ich stuss rede ;)

--
endlich zuhause...
mailto:nc-joeddehe at netcologne.de

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


php::bar PHP Wiki   -   Listenarchive