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

Hvordan gør man en sql-søgeforespørgsel mere kraftfuld?

noget lignende

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

burde virke ok.

faktisk vil dette fungere bedre

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

FWIW lavede jeg nogle hurtige tests, og hvis 'Navn' er i et IKKE-KLUSTERET INDEKS, vil SQL bruge indekset og ikke foretage en tabelscanning. Ligeledes ser LIKE ud til at bruge færre ressourcer end charindex (som giver mindre ønskværdige resultater). Testet på sql 2000.



  1. Android :Fejl ved kopiering af database (Sqliite) fra aktivmappe

  2. Sådan ekko udskriftserklæringer, mens du udfører et sql-script

  3. Hvordan bruger (installerer) dblink i PostgreSQL?

  4. Hvor klausul skal filtreres rækker i MySQL