【问题标题】:FULLTEXT index on one column vs multiple columns in following scenario?在以下情况下,一列与多列的 FULLTEXT 索引?
【发布时间】:2017-01-20 02:12:09
【问题描述】:

我有这个表结构,我正在使用 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 使用一列(此列应包含两列中的所有数据)

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      这样做更简单、更高效:

      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('...' ...)
      

      如果您想测试 just description(或只是标题),则需要另一个 FULLTEXT 索引。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-11-14
        • 2022-08-11
        • 2019-09-08
        • 1970-01-01
        • 2022-01-21
        • 2021-09-01
        • 2023-01-30
        相关资源
        最近更新 更多