Desværre ifølge MySQL SELECT-dokumentationen , "HAVING-klausulen anvendes næsten sidst, lige før varer sendes til klienten, uden optimering."
Forskellen er, at den første forespørgsel vil bruge fuldtekstindekset til at beregne relevansen kun for rækker, der har 'Bob' i name
. Den anden forespørgsel vil beregne relevansen for alle rækker, så smid de fleste ud (evt. efter sortering af hele bordet). Derfor er den anden forespørgsel betydeligt langsommere. Selvom du sætter ORDER BY-sætningen på den første forespørgsel, vil det stadig være hurtigere end at bruge HAVING:
SELECT name, MATCH(name) AGAINST('Bob') AS relevance
FROM users
WHERE MATCH(name) AGAINST('Bob')
ORDER BY relevance DESC
Generelt "brug ikke HAVING til elementer, der skal være i WHERE-sætningen."