2

我有这个表结构,我正在使用 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”列。然后我只为全文索引了这一列,而不是结合标题和描述列来制作全文索引。那么性能方面什么是最好的?

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

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

4

2 回答 2

3

这样做更简单、更有效:

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索引。

于 2016-09-13T15:41:01.997 回答
3

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

于 2016-09-15T11:24:38.647 回答