sql >> Databasteknik >  >> RDS >> Mysql

hur implementerar man en effektiv sökalgoritm när man använder php och en mysql-databas?

Ett par olika sätt att göra detta på:

Den snabbare (prestandamässigt) är:select * FROM Table where keyword LIKE '%value%' Tricket i den här är placeringen av % som är ett jokertecken, som säger antingen sök efter allt som slutar eller börjar med detta värde.

En mer flexibel men (något) långsammare kan vara REGEXP-funktionen:

Select * FROM Table WHERE keyword REGEXP 'value'

Det här använder kraften hos reguljära uttryck, så du kan bli så utarbetad som du ville med det. Men om du lämnar som ovan får du ett slags "fattigmans Google", vilket gör att sökningen kan vara bitar av övergripande fält.

Den klibbiga delen kommer in om du försöker söka efter namn. Till exempel skulle antingen hitta namnet "smith" om du sökte SMI. Ingen av dem skulle dock hitta "Jon Smith" om det fanns ett för- och efternamnsfält åtskilda. Så du måste göra en sammanlänkning för att sökningen ska hitta antingen Jon ELLER Smith ELLER Jon Smith ELLER Smith, Jon. Det kan verkligen snöa därifrån.

Naturligtvis, om du gör någon form av avancerad sökning måste du anpassa din fråga därefter. Så om du till exempel vill söka först, sist, adress, måste din fråga testas för varje:

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



  1. Räknar DISTINCT över flera kolumner

  2. Så här fixar du "Partitionsschemat '...' har ingen nästa använda filgrupp" i SQL Server

  3. GUI MySQL-databasgränssnitt

  4. Anslut SQL Server till SugarCRM