Mailinglisten-Archive |
Martin Abraham schrub: >Welche Abrage ist die schnellere? > >1. SELECT * FROM veranstaltungen2000 where rid=1 AND titel LIKE >"%XYZ%"; > >2. SELECT * FROM veranstaltungen2000 WHERE rid=1 HAVING titel >LIKE "%XYZ"; > >Meine Erfahrung ist, daß Abfrage 1 schneller ist, aber wieso? 1 sucht sich zuerst die raus, die rid=1 haben. Das geht schnell (weil "="). Anschliessend werden von den verbleibenden Datensatzen die genommen, bei denen titel like "%xyz%" ist. Das dauert lange, muss aber nicht mehr auf so viele DS angewendet werden. 2 sollte eigentlich genau das gleiche machen. Joch halte ich es fuer denkbar, dass MySQL sich bei "having" erst einmal Gedanken ueber irgendwelche Aggregatsfunktionen macht und ein "group by" sucht. Ob es vielleicht dadurch langsamer wird? Was Du machen willst ist 1. 2 ist eine bloese Konstruktion. >2. Frage: > >Ist es überhaupt ratsam so eine Suche über MYSQL durchzuführen? Nein. Wenn Du es irgendwie hinbekommst, dass Du bei Deinem like das erste "%" weglassen kannst, dann ja. Durch das % vor dem Suchwort kann MySQL keinen Index benutzen und rennt wie bescheuert durch die Tabelle auf der Suche nach dem Wort. Das dauert. MySQL ist dafuer nicht gemacht. >3. Frage: > >Wenn mehrer Benutzer ungefähr gleichzeitig eine Abfrage >ausführen, wie arbeitet MYSQL diese ab >(hintereinander/nebeneinander)? zweites. Gruss, Matthias
php::bar PHP Wiki - Listenarchive