sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo hacer que una consulta de búsqueda sql sea más poderosa?

algo como

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

debería funcionar bien

en realidad esto funcionará mejor

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

FWIW Hice algunas pruebas rápidas y si 'Nombre' está en un ÍNDICE NO CLUSTERADO, SQL usará el índice y no hará un escaneo de tabla. Además, LIKE parece usar menos recursos que charindex (que devuelve resultados menos deseables). Probado en sql 2000.