[MySQL] Suche

BF1942 Freak

Cadet 4th Year
Registriert
Mai 2005
Beiträge
73
Hallo!

Habe paar fragen zum thema durchsuchen einer mysql datenbank.

und zwar erstens: macht es einen unterschied, ob ich ein gleichheitszeichen verwende oder LIKE?
also z.b.
Code:
SELECT * FROM xyz WHERE id = '4568'
SELECT * FROM xyz WHERE id LIKE '4568'


Und was ist genau der unterschied zwischen LIKE und MATCH AGAINST und halt dem gleichheitszeichen.
hab ich das so richtig verstanden, dass MATCH AGAINST nicht nur übereinstimmungen liefert, sondern auch sachen die einfach nur so ähnlich sind?
es geht um eine suchfunktion auf der website, mit welcher der drei methoden sollte man arbeiten?
 
Hallo,

also das = ist für exakte Übereinstimmungen gedacht. Das macht auf Varchar-Feldern meistens nur Sinn, wenn es z.B. um die Suche nach einem Usernamen zum einloggen geht.
Like ist eine vereinfachte "Textsuche" Mit ihm kann man einfach nach dem Anfang eines Textfeldes suchen. text like 'blablub%', würde alle Textfelder die mit 'blablub' anfangen finden. Für Anfragen wie '%blablub' ist es allerdings nicht geeignet.
Um Abfragen wie 'text =' oder 'text like ' optimiert durchführen zu können sollte auf der entsprechenden Tabellenspalte ein Index liegen (BTREE ist recht gut dafür)

Für eine wirklich Volltextsuche sind dann die Abfragen wie "MATCH(text) AGAINST('blablub')" gedacht. Diese unterstützen auch richtige Wildcards. Allerdings muss/sollte für diese Art Abfrage ein FULLTEXT-Index auf der Spalte erzeugt werden.
-> Sprich das ist für die geplante Suchfunktion die beste Wahl.
 
Zurück
Oben