:MySQLの私は、フルテキストインデックスと次のクエリでは、次の表のデザイン持っFULL TEXTインデックスに頻繁に更新COLUMNS
CREATE TABLE artists (
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
title varchar(255) NOT NULL,
description text NOT NULL,
category_id INT NOT NULL,
-- some other columns excluded for brevity
FULLTEXT idx (title, description),
FOREIGN KEY fk_category(category_id) REFERENCES categories(id)
) ENGINE=InnoDB;
CREATE TABLE categories (
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
name varchar(255) NOT NULL,
INDEX name_idx (name)
) ENGINE=InnoDB;
SELECT *
FROM artists
INNER JOIN categories on categories.id = artists.category_id
WHERE categories.name = 'Rock' AND MATCH (artists.name, artists.description) AGAINST ('Michael Jackson' IN BOOLEAN MODE);
今タイトルと説明は頻繁に更新される可能性が高いです。アーティストテーブルに何千ものレコードがあると、ユーザーがタイトルや説明を編集したり、新しいレコードを挿入するたびにフルテキストインデックスが再作成されます。
このようなシナリオに対応するには、どのようなデザインが適していますか?タイトルと説明のフィールドを別々のテーブルに移動する必要があります。違いがありますか?
アドバイスをいただければ幸いです。注:私はsolr、elasticなどの全文検索を実装するための他のメソッドを知っていますが、私は現在のところ上記に限られています。
MyISAMまたはInnoDBを使用していて、[documentation](https://dev.mysql.com/doc/refman/5.7/en/fulltext-fine-tuning.html)を読んでいますか? –
@投稿されたコードに示されているように、そのinnodbを書き留めます。ドキュメントは、この問題に関する助言を一切していません。 – adam78
私はあなたの質問をupvotedしました。私はいくつかのMySQLの教祖があなたを助けることを願っています。 –