Mailinglisten-Archive |
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