sql >> Database teknologi >  >> RDS >> Mysql

Hvilken SQL-forespørgsel er bedre, MATCH MOD eller LIKE?

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 til LIKE '%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.




  1. Liste kolonner med indekser i PostgreSQL

  2. Sådan duplikerer du en database ved hjælp af phpMyAdmin

  3. Installer SQL Server Agent-udvidelsen på Azure Data Studio

  4. Gruppering registrerer time for time eller dag for dag og udfylder huller med nul eller nul