Bijwerken
Vanaf MySQL 5.6
en later, InnoDB
tabellen ondersteunt Match... Against
.
De eerste is veel beter. Op MijnISAM tabellen zal het een volledige tekstindex gebruiken voor die kolommen. De andere zal een volledige tafelscan doen door een concat op elke rij te doen en vervolgens een vergelijking te maken.
LIKE
is alleen efficiënt als je het doet tegen:
- een kolom (niet het resultaat van een functie, tenzij uw specifieke databaseleverancier functionele indexen ondersteunt, bijvoorbeeld Oracle, en u gebruikt ze);
- het begin van de kolom (dwz
LIKE 'blah%'
in tegenstelling totLIKE '%blah%'
); en - een kolom die is geïndexeerd.
Als een van deze voorwaarden niet waar is, kan de SQL-engine de query alleen uitvoeren door een volledige tabelscan uit te voeren. Dit kan worden gebruikt onder ongeveer 10-20 duizend rijen. Buiten dat wordt het echter snel onbruikbaar.
Opmerking: Een probleem met MATCH op MySQL is dat het alleen lijkt te matchen met hele woorden, dus een zoekopdracht naar 'bla' komt niet overeen met een kolom met de waarde 'blah', maar een zoekopdracht naar 'bla*' wel.