2
我有以下表的設計與全文索引和下面的查詢:MySQL的 - 全文INDEX ON頻繁更新的列
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)? –
@Tim它的innodb在發佈的代碼中指出。文件不提供任何關於此事的建議。 – adam78
我已經upvoted你的問題。我希望一些MySQL大師可以幫助你。 –