sql >> Databáze >  >> RDS >> Mysql

php mysql fulltextové vyhledávání více tabulek spojených id

Můžete vytvořit 'materializované zobrazení'.http://en.wikipedia.org/wiki/Materialized_view

v podstatě tabulka, která je výsledkem JOIN, a na té se vytvoří fulltextový index.

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) 

Potom můžete místo toho spouštět dotazy na tuto tabulku..

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

ale...

Tabulku budete muset pravidelně aktualizovat (nebo když se aktualizují základní tabulky) - nejjednodušší je prostě DROP a znovu vytvořit - Nebo můžete použít TRUNCATE pak INSERT INTO ... SELECT ... FROM ... formát.

(Propracovanější schémata zahrnují spouštěče, které udržují 'view' aktualizované, nebo dokonce sledují binlog a přehrávají aktualizace proti 'view')



  1. Zlepšuje cizí klíč výkon dotazů?

  2. MYSQL jak odemknout tabulku, pokud jsem použil příkaz LOCK tabulka název_tabulky WRITE;

  3. Filtrujte podle data a času formátování MYSQL

  4. PostgreSQL na podnikovém uzlu Corda vyvolává chyby vztahu