[MySql]Suche durch eine Datenbank
-
Hi Letuz !
Ich habe eine Datenbank mit Postleizahlen.
Wie kann ich mit MySql diese DB durchsuchen wenn ich in mein Textfeld zb nur "07" (also nur zwei zahlen) eintrage? Er soll mir dann alle Postleizahlen im bereich 07 ausgeben.Wie kann ich das machen?
-
SQL-Syntax SELECT FROM LIKE ('07%')
-
Danke ! Funzt !
-
wär
select * from tab where substr(plz, 0,2) = '07'
nicht ne ganze ecke schneller? ich meine mal gelernt zu haben, das like so ziemlich das langsamste ist was es gibt und man es möglichs umgehen sollte. Ist das bei mysql nimmer so?
mfg
tobi
-
Ich weiß es nicht. Nur meine Meinung.
Die Tabelle muss in beiden Fällen durchgegangen werden. Intern wird mit substr die Ergebnismenge rausgefiltert. Da ich aber denke das MySQL hier bei LIKE optimiert und auch den Cache (Ab V4) nutzt ist IMHO LIKE schneller.
-
ich glaube like ist schneller, denn ich weiss zumindest bei like zu 100%, dass es indexes benutzt. deshalb solltest du auf jeden fall einen index anlegen. es empfiehlt sich, dazu auch einen blick ins handbuch zu werfen, da stehen wundervoll nützliche infos dazu
-
MIt LIKE sucht man meist in einer CHAR,VARCHAR. Oft hat man keine Index über diese Spalte erstellt.
hier bei LIKE optimiert und auch den Cache (Ab V4) nutzt ist IMHO LIKE schneller.
-
Hmm stimmt - hört sich irgendwie logisch an, muss ich zugeben
-
also wenn ich mit LIKE [..]% was suche habe ich über diese spalte definitiv einen index erstellt.
stellt euch vor ihr habt eine tabelle mit nachhilfegesuchen oder jobangeboten und wollt nach postleitzahlen eingrenzen. wenn ich davon ausgehe, das eine so gut gefüllte tabelle mal so mindestens 1000 einträge aht und ich mit "plz LIKE '15%'" suche, muss die engine ALLE 1000 einträge durchsuchen und schauen obs matcht. wenn ich nen index habe, hat die engine spätestens nach dem 10. zugriff den ersten datensatz der auf '15%' matcht. das wäre dann so um die 100mal schneller und da wir ja alle sicher schon oft genug gelesen haben, dass die datenbank der flaschenhals einer anwendung ist, ist das doch eigentlich überzeugend.