在以下场景中,一列与多列的FULLTEXT索引?

时间:2016-09-12 15:20:19

标签: mysql indexing full-text-search full-text-indexing fulltext-index

我有这个表结构,我正在使用MYSQL

post` (
  `post_id_pk` INT,
  `title` VARCHAR(100),
  `description` TEXT,
  `search_content` TEXT
)

我有搜索功能。如果用户在文本框中键入文本,并且该单词包含在标题列或描述列的记录中,那么相应的帖子应显示给用户。我使用此查询来获得结果

MATCH (search_content) AGAINST (@searchQuery IN NATURAL LANGUAGE MODE)

这很好用。我想知道的是你看到了“search_content”栏吗?我所做的是当用户提交文章时,我将标题,描述数据和整个文本放在“search_content”列中。然后我只为此列编制了全文索引,而不是将title和description列组合在一起以生成全文索引。那么表现明智最好的是什么?

1)将两列合并到FULLTEXT INDEX并使用它们

2)对FULLTEXT使用一列(此列应包括两列中的所有数据)

2 个答案:

答案 0 :(得分:2)

通过将2列数据合并为1,您不会获得任何性能提升。继续使用MYSQL所说的内容。您可以轻松地在两列上添加全文索引。只需使用它们。

答案 1 :(得分:1)

这样做更简单,更有效:

CREATE TABLE post` (
  `post_id_pk` INT,
  `title` VARCHAR(100),
  `description` TEXT,
  -- Leave this out:  `search_content` TEXT
  FULLTEXT(title, description)  -- add this
);

然后

MATCH(title, description) AGAINST('...' ...)

如果您 想要针对 description(或仅标题)进行测试,则需要另一个FULLTEXT索引。