sql >> Database teknologi >  >> RDS >> Mysql

hvordan implementerer man en effektiv søgealgoritme, når man bruger php og en mysql-database?

Et par forskellige måder at gøre dette på:

Den hurtigste (ydelsesmæssigt) er:select * FROM Table where keyword LIKE '%value%' Tricket i denne er placeringen af ​​%, som er et jokertegn, der siger enten søg alt, der ender eller begynder med denne værdi.

En mere fleksibel men (lidt) langsommere kunne være REGEXP-funktionen:

Select * FROM Table WHERE keyword REGEXP 'value'

Dette bruger kraften i regulære udtryk, så du kunne blive lige så omfattende, som du ville med det. Men at forlade som ovenfor giver dig en slags "fattigmands Google", hvilket gør det muligt for søgningen at være stumper og stykker af overordnede felter.

Den klæbrige del kommer ind, hvis du forsøger at søge efter navne. For eksempel ville enten finde navnet "smith", hvis du søgte SMI. Ingen af ​​dem ville dog finde "Jon Smith", hvis der var et for- og efternavnsfelt adskilt. Så du bliver nødt til at lave en sammenkædning for at søgningen kan finde enten Jon ELLER Smith ELLER Jon Smith ELLER Smith, Jon. Det kan virkelig snebold derfra.

Hvis du laver en form for avanceret søgning, skal du selvfølgelig tilpasse din forespørgsel i overensstemmelse hermed. Så hvis du for eksempel vil søge først, sidst, adresse, så skal din forespørgsel teste for hver:

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



  1. Kombiner flere rækker til én MySQL Join

  2. Hvornår fungerer MySQL ORDER BY RAND() i rækkefølge?

  3. Forskelle mellem DATA INFILE og LOAD DATA LOCAL INFILE

  4. Sådan bruger du Database Documenter i Access