sql >> Databáze >  >> RDS >> Mysql

Jak zvýšit výkon vyhledávacího dotazu SQL?

něco jako

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

mělo by fungovat ok.

ve skutečnosti to bude fungovat lépe

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

FWIW Provedl jsem několik rychlých testů a pokud je 'Jméno' v NEZAHRNUTÉM INDEXU, SQL použije index a neprovede skenování tabulky. Zdá se také, že LIKE využívá méně zdrojů než charindex (což vrací méně žádoucí výsledky). Testováno na sql 2000.



  1. vložte data XML do mysql pomocí php

  2. Jádro Entity Framework – Obsahuje Rozlišují se malá a velká písmena?

  3. Jak určit, co je efektivnější:DISTINCT nebo WHERE EXISTS?

  4. Kam mám uložit připojovací řetězec databáze?