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

Come rendere più potente una query di ricerca sql?

qualcosa come

Select * from TableName where Name Like 'Spa%'
ORDER BY case when soundex(name) = soundex('Spa') then '1' else soundex(name) end

dovrebbe funzionare bene.

in realtà funzionerà meglio

Select * from TableName where Name Like 'Spa%'
ORDER BY DIFFERENCE(name, 'Spa') desc;

FWIW Ho eseguito alcuni test rapidi e se "Nome" è in un INDICE NON CLUSTERED SQL utilizzerà l'indice e non eseguirà una scansione della tabella. Inoltre, LIKE sembra utilizzare meno risorse di charindex (che restituisce risultati meno desiderabili). Testato su sql 2000.