sql >> Databasteknik >  >> RDS >> Mysql

Hur gör man en sql-sökfråga mer kraftfull?

något liknande

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

borde fungera ok.

faktiskt kommer detta att fungera bättre

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

FWIW gjorde jag några snabba tester och om 'Namn' finns i ett ICKEKLUSTERAD INDEX kommer SQL att använda indexet och gör ingen tabellsökning. Dessutom verkar LIKE använda mindre resurser än charindex (som ger mindre önskvärda resultat). Testad på sql 2000.



  1. MySQL Allvarligt fel:Kan inte öppna och låsa behörighetstabeller:Felaktigt filformat "användare"

  2. extrahera de ID som tilldelats en lista med användar-ID

  3. Gäller gränsen för det maximala antalet SQL-join-tabeller för hela frågan, eller räknas underfrågor separat?

  4. hur väljer jag AVG för flera kolumner på en enda rad