Актуализиране
От MySQL 5.6
и по-късно, InnoDB
tables поддържа Match... Against
.
Първото е много По-добре. На MyISAM таблици, той ще използва пълен текстов индекс срещу тези колони. Другият ще направи пълно сканиране на таблицата, като прави конкат на всеки ред и след това сравнение.
LIKE
е ефективен само ако го правите срещу:
- колона (не е резултат от функция, освен ако вашият конкретен доставчик на база данни поддържа функционални индекси – Oracle, например – и вие ги използвате);
- началото на колоната (т.е.
LIKE 'blah%'
за разлика отLIKE '%blah%'
); и - колона, която е индексирана.
Ако някое от тези условия не е вярно, единственият начин SQL машината да изпълни заявката е като извърши пълно сканиране на таблицата. Това може да се използва под около 10-20 хиляди реда. Освен това обаче бързо става неизползваем.
Забележка: Един проблем с MATCH в MySQL е, че изглежда съвпада само с цели думи, така че търсенето на „bla“ няма да съвпадне с колона със стойност „blah“, но търсенето на „bla*“ ще.