Wie schnell ist mySQL ("like"-Abfrage bei mehreren tausend Datensätzen)
Michael Vogel
- datenbank
Hi!
Ich werde demnächst eine Mini-Suchmaschine basteln, die Einträge werden wohl im Bereich von etwa 5000 Datensätzen liegen. Wie sieht es da eigentlich mit der Performance von mySQL aus?
Geht das ohne Probleme, dort eine Ähnlichkeitssuche, bzw. eine Suche nach Teilbegriffen durchzuführen?
Danke!
Michael
auf jeden fall ist eine "echte" volltextsuche in jedem fall schneller, beim MSSQL 7.0 geht das... vieleicht beim mysql auch?!
cu
ANDREAS
Hi!
Ich werde demnächst eine Mini-Suchmaschine basteln, die Einträge werden wohl im Bereich von etwa 5000 Datensätzen liegen. Wie sieht es da eigentlich mit der Performance von mySQL aus?
Geht das ohne Probleme, dort eine Ähnlichkeitssuche, bzw. eine Suche nach Teilbegriffen durchzuführen?
Danke!
Michael
auf jeden fall ist eine "echte" volltextsuche in jedem fall schneller, beim MSSQL 7.0 geht das... vieleicht beim mysql auch?!
Was ist der Unterschied zwischen "like" und einer "echten" Volltextsuche?
Tschau!
Michael
auf jeden fall ist eine "echte" volltextsuche in jedem fall schneller, beim MSSQL 7.0 geht das... vieleicht beim mysql auch?!
Was ist der Unterschied zwischen "like" und einer "echten" Volltextsuche?
Tschau!
Michael
Hallo Michael,
LIKE sucht innerhalb eines Feld nach dem Suchbegriff, wobei die
Stelle, an der der Begriff vorkommen muss, mit Wildcards bestimmt wird.
LIKE 'test%' -> sucht am Anfang des Inhalts (egal was danach kommt)
in gewissen Fällen kann hier das DBMS auch einen Index benutzen
LIKE '%test' -> sucht am Ende des Inhalts (egal was davor kommt)
LIKE '%test' -> sucht den Begriff irgendwo im Inhalt (langsamste Variante)
Eine Volltextsuche ist anders aufgebaut. Hierbei erstellt das DBMS
eigene Tabellen mit den Begriffen und referenziert dort auf den
eigentlichen Datensatz. Man kann es so einstellen, daß Wörter wie
"und", "oder", ... nicht indiziert werden, denn nach diesen Wörtern
wird wohl keine suchen, diese werden eher als Operatoren verwendet.
Durch den Aufbau dieser eigenen Tabellen kann das DBMS natürlich viel
schneller filtern als bei einer LIKE-Abfrage.
Tschau, Stefan
LIKE sucht innerhalb eines Feld nach dem Suchbegriff, wobei die
Stelle, an der der Begriff vorkommen muss, mit Wildcards bestimmt wird.
Jupp, soweit ist mir das bekannt. Ich programmiere zwar beruflich nicht mit SQL, jedoch auch mit diversen anderen Datenbanksystemen.
Eine Volltextsuche ist anders aufgebaut. Hierbei erstellt das DBMS
eigene Tabellen mit den Begriffen und referenziert dort auf den
eigentlichen Datensatz.
Achso. Stimmt eigentlich. Hmm, das müßte IMHO recht einfach zu erledigen sein. Hmm, schwierig wird es nur, wenn mehrere Schlüsselworte reinkommen, aber nicht unmöglich.
Naja, die Datenmenge wird zu Anfang nicht sooo groß sein, da wird like reichen. Wenn es dann dem Kunden zu langsam wird, kann ich mir immer noch diese Schlüsselwortsuche durch den Kopf gehen lassen.
Mache ich das jetzt schon rein, wird ihm das evtl. zu teuer. Es wäre allerdings nur fair, wenn ich ihn auf diese Gefahr hinweise, denke ich.
Danke!
Michael
LIKE sucht innerhalb eines Feld nach dem Suchbegriff, wobei die
Stelle, an der der Begriff vorkommen muss, mit Wildcards bestimmt wird.Jupp, soweit ist mir das bekannt. Ich programmiere zwar beruflich nicht mit SQL, jedoch auch mit diversen anderen Datenbanksystemen.
»»
Eine Volltextsuche ist anders aufgebaut. Hierbei erstellt das DBMS
eigene Tabellen mit den Begriffen und referenziert dort auf den
eigentlichen Datensatz.Achso. Stimmt eigentlich. Hmm, das müßte IMHO recht einfach zu erledigen sein. Hmm, schwierig wird es nur, wenn mehrere Schlüsselworte reinkommen, aber nicht unmöglich.
Naja, die Datenmenge wird zu Anfang nicht sooo groß sein, da wird like reichen. Wenn es dann dem Kunden zu langsam wird, kann ich mir immer noch diese Schlüsselwortsuche durch den Kopf gehen lassen.
Mache ich das jetzt schon rein, wird ihm das evtl. zu teuer. Es wäre allerdings nur fair, wenn ich ihn auf diese Gefahr hinweise, denke ich.
Danke!
Michael
Hallo Michael,
für Dich als Programmierer ändert sich eigentlich nicht viel, da daß DBMS
die benötigten Tabellen selbst pflegt. Der einzigste Unterschied ist
der, daß Du einen Datenbankserver benötigst.
Ein Oracle RDBMS wird wohl nict in euerm Budget drin sein, aber im SBS
4.5 ist ein MS SQLServer 7.0 enthalten (max. 50 DB's á 10 GB). Ist nicht
mal so teuer.
Im SQL Server ändert sich die Syntax der Abfrage dann in etwa so:
<%
' -- SQL Statement bisher
'SQL = "SELECT * FROM <tablename> WHERE <fieldname> LIKE '%" & var & "%'"
' --- SQL Statement neu
SQL = "SELECT * FROM <tablename> WHERE CONTAINS(<fieldname>,'" & Var & "')"
%>
Da ich denke, daß wir jetzt weit genug vom eigentlichen Thema weg sind
(MySQL und jetzt bei SQL Server), würde ich sagen, beenden wir diesen
Teil.
Tschau, Stefan