sql >> Databasteknik >  >> RDS >> Mysql

Vilken SQL-fråga är bättre, MATCH MOT eller GILLA?

Uppdatera

Från och med MySQL 5.6 och senare, InnoDB tabeller stöder Match... Against .

Den första är mycket bättre. På MyISAM tabeller kommer det att använda ett fulltextindex mot dessa kolumner. Den andra kommer att göra en hel tabell genom att göra en konkat på varje rad och sedan en jämförelse.

LIKE är bara effektivt om du gör det mot:

  • en kolumn (inte ett resultat av en funktion om inte din specifika databasleverantör stöder funktionella index--Oracle, till exempel--och du använder dem);
  • starten av kolumnen (dvs LIKE 'blah%' i motsats till LIKE '%blah%' ); och
  • en kolumn som är indexerad.

Om något av dessa villkor inte är sant är det enda sättet för SQL-motorn att köra frågan genom att göra en fullständig tabellskanning. Detta kan vara användbart under cirka 10-20 tusen rader. Utöver det blir den dock snabbt oanvändbar.

Obs! Ett problem med MATCH på MySQL är att det bara verkar matcha mot hela ord, så en sökning på 'bla' kommer inte att matcha en kolumn med värdet 'bla', men en sökning på 'bla*' kommer att göra det.




  1. Oracle till PostgreSQL:BÖRJA MED/KOPPLA VID

  2. PostgreSQL v13 distribution och skalning med ClusterControl 1.8.2

  3. Oracle:'=ANY()' kontra 'IN ()'

  4. Använder Intel Optane Storage för SQL Server