sql >> Databasteknik >  >> RDS >> Mysql

Alternativ MySQL fulltext söksyntax

Tyvärr, enligt MySQL SELECT-dokumentationen , "HAVING-satsen tillämpas nästan sist, precis innan objekt skickas till klienten, utan optimering."

Skillnaden är att den första frågan använder fulltextindexet för att beräkna relevansen endast för rader som har 'Bob' i name . Den andra frågan kommer att beräkna relevansen för alla rader, släng sedan ut de flesta (eventuellt efter att ha sorterat hela tabellen). Därför är den andra frågan betydligt långsammare. Även om du lägger ORDER BY-satsen på den första frågan, kommer det fortfarande att gå snabbare än att använda HAVING:

SELECT name, MATCH(name) AGAINST('Bob') AS relevance
FROM users
WHERE MATCH(name) AGAINST('Bob')
ORDER BY relevance DESC

I allmänhet, "använd inte HAVING för objekt som ska finnas i WHERE-satsen."




  1. php-kod för att testa pdo är tillgänglig?

  2. mysql concat sträng med resultat

  3. Installation av Postgres på fönster för användning med Ruby-on-Rails

  4. SQL Server 2016:Infoga data