Re: SELECT Performance, welche dieser beiden Queries ist schneller
- From: Thomas Schultz <escadamausgaby@xxxxxxxxx>
- Date: Thu, 04 Aug 2005 20:57:24 GMT
On 2005-08-04 19:21:25 +0200, Kai Ruhnau <K.Ruhnau@xxxxxxxxxxxxxxxxxxxxxx> said:
Thomas Schultz schrieb:da ich es aufgrund einer hohen Serverauslastung die ich nicht kontrollieren kann, zuverlässig messen kann, wüsste ich gerne, welcher SELECT perfomanter ist. Es handelt sich um eine Tabelle mit ca. 120000 rows.
Dafür gibt es EXPLAIN, das sagt einem recht zuverlässig, welcher Aufwand getrieben werden muss, um zu einem Ergebnis zu kommen.
Hallo,
danke für den Tipp. Kannte ich noch nicht.
1. SELECT ID FROM ARTIKELDer Index ist bei dieser Art der Suche reine Platzverschwendung. Versuch mal im Telefonbuch alle Namen zu finden, die auf 'er' enden. Durch die Benutzung einer Funktion in deinem zweiten SELECT verhinderst du zusätzlich die Nutzung eines Index.WHERE NAME LIKE '%beispiel%' OR FARBE LIKE '%beispiel%' OR LAND LIKE '%beispiel%' OR ARTIKELNR LIKE '%beispiel%'
oder:
2. SELECT ID FROM ARTIKEL WHERE CONCAT_WS(' ',NAME,FARBE,LAND,ARTIKELNR) LIKE '%beispiel%'
Alle angesprochenen Felder haben einen Index.
Okay, dann geht das in Ablage P.
Kann das jemand aus dem Stand sagen? Vielen Dank schonmal!
Jedoch bringen beide Queries recht schnell das gewünschte Ergebnis, maximal 2-3 Sekunden bei den über 100000 rows, vom absenden der HTML-Form bis die Ergebnisseite fertig aufgebaut ist. Ist das so schlecht?
Beides unbrauchbar.
<Glaskugel>
Ein üblicher Ausweg ist es, von einem Benutzer direkt mehr Kontext in Form von mehreren Eingabefeldern zu verlangen und nicht mit LIKE '%...' zu arbeiten. Ich weiß üblicherweise, ob ich eine Farbe oder ein Land suche.Ja, das stimmt für das Beispiel, das habe ich mir allerdings auch komplett aus den Fingern gesogen. Es handelt sich um eine Musikdatenbank, worin gesucht werden soll. Und das Problem ist, dass der Sucher z.B. nicht weiß, wenn er nach dem Begriff "Move" sucht, ob das zum Interpreten gehört oder zum Titel, usw.
</Glaskugel>
Was ich möchte, ist eine Suche a la Amazon anbieten, die den Sucher mit nicht zuvielen Eingaben nervt, bevor die ersten Ergebnisse kommen...verfeinern kann man die Suche ja immer noch/
Viele Grüße, Thomas
.
- References:
- Re: SELECT Performance, welche dieser beiden Queries ist schneller
- From: Kai Ruhnau
- Re: SELECT Performance, welche dieser beiden Queries ist schneller
- Prev by Date: Re: rcmysql und etc/init.d/mysql start
- Next by Date: Re: SELECT Performance, welche dieser beiden Queries ist schneller
- Previous by thread: Re: SELECT Performance, welche dieser beiden Queries ist schneller
- Next by thread: Re: SELECT Performance, welche dieser beiden Queries ist schneller
- Index(es):
Relevant Pages
|