sql >> Databáze >  >> RDS >> Mysql

jak implementovat efektivní vyhledávací algoritmus při použití php a databáze mysql?

Několik různých způsobů, jak to udělat:

Ta rychlejší (z hlediska výkonu) je:select * FROM Table where keyword LIKE '%value%' Trik v tomto spočívá v umístění %, což je zástupný znak, který říká, že buď prohledejte vše, co končí nebo začíná touto hodnotou.

Flexibilnější, ale (trochu) pomalejší by mohla být funkce REGEXP:

Select * FROM Table WHERE keyword REGEXP 'value'

To využívá sílu regulárních výrazů, takže s tím můžete být tak komplikovaní, jak jste chtěli. Ponecháte-li však výše uvedený postup, získáte svého druhu „Google chudáka“, který umožňuje hledání kousků a kousků celkových polí.

Lepící část přichází, pokud se snažíte hledat jména. Pokud byste například hledali SMI, oba by našli jméno „kovář“. Ani jeden by však nenašel „Jon Smith“, pokud by bylo pole jména a příjmení odděleno. Takže byste museli provést nějaké zřetězení, abyste našli buď Jon NEBO Smith NEBO Jon Smith NEBO Smith, Jon. Odtamtud to může opravdu sněžit.

Samozřejmě, pokud provádíte nějaké pokročilé vyhledávání, budete muset svůj dotaz odpovídajícím způsobem upravit. Pokud byste tedy například chtěli hledat první, poslední, adresu, pak by váš dotaz musel otestovat každou:

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



  1. Jak vytvořit primární klíč sériově?

  2. Dynamické maskování dat v SQL Server pro začátečníky

  3. Zkopírujte strukturu tabulky do nové tabulky

  4. PIVOT dotaz na odlišné záznamy