sql >> Database >  >> RDS >> Mysql

hoe implementeer je een effectief zoekalgoritme bij het gebruik van php en een mysql-database?

Een aantal verschillende manieren om dit te doen:

De snellere (qua prestaties) is:select * FROM Table where keyword LIKE '%value%' De truc in deze is de plaatsing van het % dat een jokerteken is en zegt:zoek alles wat eindigt of begint met deze waarde.

Een flexibelere maar (iets) langzamere zou de REGEXP-functie kunnen zijn:

Select * FROM Table WHERE keyword REGEXP 'value'

Dit maakt gebruik van de kracht van reguliere expressies, dus je kunt het zo uitgebreid krijgen als je wilt. Als u echter zoals hierboven vertrekt, krijgt u een soort 'poor man's Google', waardoor de zoekopdracht stukjes en beetjes van algemene velden kan zijn.

Het plakkerige gedeelte komt binnen als u op namen probeert te zoeken. Beide zouden bijvoorbeeld de naam "smid" vinden als u in SMI zocht. Geen van beide zou echter "Jon Smith" vinden als er een voor- en achternaam gescheiden waren. U moet dus een aaneenschakeling doen voor de zoekopdracht om Jon OF Smith OF Jon Smith OF Smith, Jon te vinden. Vanaf daar kan het echt sneeuwballen.

Als u een soort van geavanceerd zoeken uitvoert, moet u uw zoekopdracht natuurlijk dienovereenkomstig aanpassen. Dus als u bijvoorbeeld het eerste, het laatste adres wilt zoeken, moet uw zoekopdracht op elk van de volgende testen:

SELECT * FROM table WHERE first LIKE '%value%' OR last LIKE '%value%' OR address LIKE '%value'



  1. Sorteer 0-waarde databaserijen na niet-nul rijen

  2. Rails en PostgreSQL:rol postgres bestaat niet

  3. haal elke dag 3 rijen op bij een planning voor 1 jaar

  4. MySQL - SELECT WHERE field IN (subquery) - Extreem traag waarom?