sql >> データベース >  >> RDS >> Mysql

phpmysql全文検索複数のテーブルをIDで結合

    「マテリアライズドビュー」を作成できます。 http://en.wikipedia.org/wiki/Materialized_view

    基本的には、JOINの結果であるテーブルであり、その上にフルテキストインデックスを作成します。

    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) 
    

    その後、代わりにそのテーブルでクエリを実行できます。

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

    しかし...

    テーブルを定期的に(または基になるテーブルが更新するときに)更新する必要があります。最も簡単なのは、DROPすることです。 作成して再作成する-または、TRUNCATEを使用できます 次に、INSERT INTO ... SELECT ... FROM ... フォーマット。

    (より複雑なスキームには、「ビュー」を更新したままにするトリガー、またはbinlogを監視し、「ビュー」に対して更新を再生するトリガーが含まれます)



    1. MountainLionにMySQLdbをインストールする方法

    2. SQLiteで現在の時刻を取得する方法

    3. MacOSXへのMySQLPythonのインストール

    4. PHP:fetchall()を使用したテーブルデータの表示