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

php mysql wyszukiwanie pełnotekstowe wiele tabel połączonych przez id

Możesz utworzyć „widok zmaterializowany”.http://en.wikipedia.org/wiki/Materialized_view

w zasadzie tabela, która jest wynikiem JOIN, i tworzy na niej indeks pełnotekstowy.

CREATE TABLE materialized (FULLTEXT idx (user_name,department_name)) 
 SELECT u.id,user_name,department_name 
 FROM users u INNER JOIN departments d ON (d.id = dept_id) 

Zamiast tego możesz uruchamiać zapytania na tej tabeli.

SELECT * FROM materialized WHERE MATCH(user_name,department_name) AGAINST('test' IN BOOLEAN MODE)

ale...

Będziesz musiał okresowo aktualizować tabelę (lub gdy aktualizują się tabele bazowe) - najłatwiej jest po prostu DROP i odtwórz — możesz też użyć TRUNCATE następnie INSERT INTO ... SELECT ... FROM ... format.

(bardziej rozbudowane schematy obejmują wyzwalacze, aby aktualizować „widok”, a nawet oglądać binlog i odtwarzać aktualizacje względem „widoku”)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak poprosić MySQL o monitowanie o wartości w zapytaniu?

  2. Jak używać w klauzuli w podzapytaniu

  3. Jak wypełnić gridview mysql?

  4. Błąd zduplikowanej kolumny MySQL tylko wtedy, gdy zapytanie jest opakowane jako podzapytanie

  5. Oblicz procentowy wzrost/spadek od wartości poprzedniego wiersza