Opdater
Fra MySQL 5.6
og senere InnoDB
tabeller understøtter Match... Against
.
Den første er meget bedre. På MyISAM tabeller vil den bruge et fuldtekstindeks mod disse kolonner. Den anden vil lave en fuld tabelscanning ved at lave en sammensætning på hver række og derefter en sammenligning.
LIKE
er kun effektiv, hvis du gør det mod:
- en kolonne (ikke et resultat af en funktion, medmindre din særlige databaseleverandør understøtter funktionelle indekser - Oracle, for eksempel - og du bruger dem);
- starten af kolonnen (dvs.
LIKE 'blah%'
i modsætning tilLIKE '%blah%'
); og - en kolonne, der er indekseret.
Hvis nogen af disse betingelser ikke er sande, er den eneste måde for SQL-motoren at udføre forespørgslen på ved at lave en fuld tabelscanning. Dette kan bruges under omkring 10-20 tusinde rækker. Ud over det bliver den dog hurtigt ubrugelig.
Bemærk: Et problem med MATCH på MySQL er, at det ser ud til kun at matche mod hele ord, så en søgning på 'bla' vil ikke matche en kolonne med værdien 'bla', men en søgning på 'bla*' vil.