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

Alternatywna składnia wyszukiwania pełnotekstowego MySQL

Niestety, zgodnie z dokumentacją MySQL SELECT , „klauzula HAVING jest stosowana prawie jako ostatnia, tuż przed wysłaniem elementów do klienta, bez optymalizacji”.

Różnica polega na tym, że pierwsze zapytanie użyje indeksu pełnotekstowego do obliczenia trafności tylko dla wierszy, które mają „Bob” w name . Drugie zapytanie obliczy trafność dla wszystkich rzędów, a następnie większość z nich wyrzuć (ewentualnie po posortowaniu całej tabeli). Dlatego drugie zapytanie jest znacznie wolniejsze. Nawet jeśli umieścisz klauzulę ORDER BY w pierwszym zapytaniu, nadal będzie to szybsze niż użycie HAVING:

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

Ogólnie rzecz biorąc, „nie używaj HAVING dla pozycji, które powinny znajdować się w klauzuli WHERE”.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Uzyskiwanie pierwszego dnia tygodnia w MySql za pomocą Week No

  2. Formularz PHP zwraca Uwaga:Konwersja z tablicy na ciąg znaków

  3. Utwórz pole z domyślnym czasem epoki

  4. Problem z dopasowaniem wielu zainteresowań w MySQL

  5. Funkcja Mysql zwracająca wartość z zapytania