sql >> Database >  >> RDS >> Mysql

php mysql full text zoeken meerdere tabellen samengevoegd door id

Je zou een 'gematerialiseerde weergave' kunnen maken.http://en.wikipedia.org/wiki/Materialized_view

eigenlijk een tabel die de resultaten is van de JOIN, en daarop een volledige tekstindex maken.

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) 

U kunt dan in plaats daarvan query's uitvoeren op die tabel.

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

maar...

U moet de tabel periodiek bijwerken (of wanneer de onderliggende tabellen worden bijgewerkt) - het gemakkelijkst is om gewoon DROP en opnieuw maken - Of u kunt TRUNCATE . gebruiken dan INSERT INTO ... SELECT ... FROM ... formaat.

(Meer uitgebreide schema's omvatten triggers om de 'view' up-to-date te houden, of zelfs de binlog te bekijken, en updates opnieuw af te spelen tegen de 'view')



  1. Wat is het verschil tussen =en :=in MySQL?

  2. Hoe de dagnaam van een datum in Oracle te krijgen

  3. Betekent een postgres-externe sleutel een index?

  4. Gedeeltelijke resultaatgegevens in array pushen en verzenden