Aktualizovat
Od MySQL 5.6
a později InnoDB
tabulky podporuje Match... Against
.
První je hodně lepší. Na MyISAM tabulky, použije proti těmto sloupcům fulltextový index. Druhý provede úplný sken tabulky, provede concat na každém řádku a poté srovnání.
LIKE
je efektivní pouze tehdy, když to děláte proti:
- sloupec (není výsledkem funkce, pokud váš konkrétní dodavatel databáze nepodporuje funkční indexy – například Oracle – a vy je nepoužíváte);
- začátek sloupce (tj.
LIKE 'blah%'
na rozdíl odLIKE '%blah%'
); a - sloupec, který je indexován.
Pokud některá z těchto podmínek není pravdivá, jediným způsobem, jak může stroj SQL provést dotaz, je provést úplnou kontrolu tabulky. To může být použitelné pod cca 10-20 tisíci řádky. Kromě toho se však rychle stane nepoužitelným.
Poznámka: Jeden problém s MATCH na MySQL je, že se zdá, že se shoduje pouze s celými slovy, takže hledání 'bla' nebude odpovídat sloupci s hodnotou 'bla', ale hledání 'bla*' ano.