Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Które zapytanie SQL jest lepsze, MATCH AGAINST czy LIKE?

Aktualizacja

Od MySQL 5.6 i później, InnoDB table obsługuje Match... Against .

Pierwszy to dużo lepszy. Na MyISAM tabele użyje indeksu pełnotekstowego względem tych kolumn. Drugi wykona pełne skanowanie tabeli, wykonując concat w każdym wierszu, a następnie porównanie.

LIKE jest skuteczny tylko wtedy, gdy robisz to przeciwko:

  • kolumna (nie wynik funkcji, chyba że dany dostawca bazy danych obsługuje indeksy funkcjonalne — na przykład Oracle — a Ty ich używasz);
  • początek kolumny (np. LIKE 'blah%' w przeciwieństwie do LIKE '%blah%' ); i
  • kolumna, która jest indeksowana.

Jeśli którykolwiek z tych warunków nie jest spełniony, jedynym sposobem na wykonanie zapytania przez aparat SQL jest wykonanie pełnego skanowania tabeli. Może to być użyteczne pod około 10-20 tys. rzędów. Poza tym szybko staje się bezużyteczny.

Uwaga: Jednym z problemów z MATCH w MySQL jest to, że wydaje się, że pasuje tylko do całych słów, więc wyszukiwanie „bla” nie dopasuje kolumny z wartością „blah”, ale wyszukiwanie „bla*” tak.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql:Ustaw format DATETIME na „DD-MM-RRRR GG:MM:SS” podczas tworzenia tabeli

  2. Jaki jest odpowiednik ELT() w SQL Server w MySQL?

  3. Jak skopiować tabelę w MySQL

  4. Czym jest kardynalność w MySQL?

  5. MySQL:wiele tabel czy jedna tabela z wieloma kolumnami?