有问题的查询中的 "AND title <> 'MySQL'" 是否使用全文索引?
Does "AND title <> 'MySQL'" in the query in question use full text indexing?
我正在处理一个查询,希望尽可能提高它的效率。
Table 就像:
CREATE TABLE articles (
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
title VARCHAR(200),
FULLTEXT (title)
) Engine=MyISAM;
需要高效的查询:
SELECT * FROM articles
WHERE
MATCH (title)
AGAINST ('+MySQL' IN BOOLEAN MODE)
AND title <> 'MySQL';
关于上述查询,我有 2 个问题:
- 是否
AND title <> 'MySQL'
使用了全文索引?
- 我们可以提高效率吗?
您可以在此处找到 fiddle http://www.sqlfiddle.com/#!9/268411/2/0
Do AND title <> 'MySQL'
used full text index?
没有。
第一个术语,MATCH...AGAINST
将使用全文索引,select 仅使用标题中出现该词的行。这将导致查询仅检查匹配的行。
然后,检查这些行,第二项将进一步过滤标题不仅仅是单个单词的行 'MySQL'。标题仍将 包含 'MySQL' 但它们也必须有其他词(或至少一些其他字符)。
Can we make it more efficient?
不适用于 MySQL。
我相信优化器会选择使用全文索引进行 MATCH...AGAINST
搜索,或者它将 B-tree 索引用于另一种类型的谓词,但不会同时使用两者。
如果你想让它更有效率,你必须用其他搜索引擎索引数据,例如ElasticSearch 或 Sphinx 搜索。
我正在处理一个查询,希望尽可能提高它的效率。
Table 就像:
CREATE TABLE articles (
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
title VARCHAR(200),
FULLTEXT (title)
) Engine=MyISAM;
需要高效的查询:
SELECT * FROM articles
WHERE
MATCH (title)
AGAINST ('+MySQL' IN BOOLEAN MODE)
AND title <> 'MySQL';
关于上述查询,我有 2 个问题:
- 是否
AND title <> 'MySQL'
使用了全文索引? - 我们可以提高效率吗?
您可以在此处找到 fiddle http://www.sqlfiddle.com/#!9/268411/2/0
Do
AND title <> 'MySQL'
used full text index?
没有。
第一个术语,MATCH...AGAINST
将使用全文索引,select 仅使用标题中出现该词的行。这将导致查询仅检查匹配的行。
然后,检查这些行,第二项将进一步过滤标题不仅仅是单个单词的行 'MySQL'。标题仍将 包含 'MySQL' 但它们也必须有其他词(或至少一些其他字符)。
Can we make it more efficient?
不适用于 MySQL。
我相信优化器会选择使用全文索引进行 MATCH...AGAINST
搜索,或者它将 B-tree 索引用于另一种类型的谓词,但不会同时使用两者。
如果你想让它更有效率,你必须用其他搜索引擎索引数据,例如ElasticSearch 或 Sphinx 搜索。