在以下情况下,一列与多列的 FULLTEXT 索引?
FULLTEXT index on one column vs multiple columns in following scenario?
我有这个 table 结构,我正在使用 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 使用一列(该列应包括两列的所有数据)
这样做更简单高效:
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('...' ...)
如果你也想针对justdescription
(或只是标题)进行测试,你需要另一个FULLTEXT
索引。
将 2 列数据合并为一列不会获得任何性能提升。继续使用 MYSQL 所说的。您可以轻松地在两列上添加全文索引。就用它们吧。
我有这个 table 结构,我正在使用 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 使用一列(该列应包括两列的所有数据)
这样做更简单高效:
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('...' ...)
如果你也想针对justdescription
(或只是标题)进行测试,你需要另一个FULLTEXT
索引。
将 2 列数据合并为一列不会获得任何性能提升。继续使用 MYSQL 所说的。您可以轻松地在两列上添加全文索引。就用它们吧。