Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie kann man eine SQL-Suchanfrage leistungsfähiger machen?

so etwas wie

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

sollte ok funktionieren.

tatsächlich wird dies besser funktionieren

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

FWIW Ich habe einige schnelle Tests durchgeführt und wenn 'Name' in einem NICHT EINGESCHLOSSENEN INDEX ist, verwendet SQL den Index und führt keinen Tabellenscan durch. Außerdem scheint LIKE weniger Ressourcen zu verbrauchen als charindex (was weniger wünschenswerte Ergebnisse liefert). Getestet auf SQL 2000.