所述查询中的 "AND title <>'MySQL'"是否使用全文索引?

问题描述 投票:0回答:1

我正在做一个查询,如果可能的话,想让它更有效率。

表是这样的。

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个问题。

  1. 我有两个问题,关于上面的查询: AND title <> 'MySQL' 用过的全文索引?
  2. 能不能让它更有效率?

你可以在这里找到提琴 http:/www.sqlfiddle.com#!926841120

mysql full-text-search where-clause full-text-indexing
1个回答
0
投票

AND title <> 'MySQL' 使用了全文索引?

ぃ。

第一个术语。MATCH...AGAINST 将使用全文索引,只选择标题中出现该词的记录。这将导致查询只检查匹配的行。

然后,在检查这些记录时,第二个术语将进一步过滤标题中不仅仅是 "MySQL "这个词的记录。标题仍然会是 包含 'MySQL',但他们也必须有其他的字(或至少有一些其他的字符)。

我们能不能让它更有效率?

用MySQL就不行。

我相信优化器要么会选择用全文索引来为 MATCH...AGAINST 搜索,或者它会使用B-tree索引来处理另一种类型的谓词,但不能同时使用两种。

如果你想让它更高效,你就必须用其他搜索引擎来索引数据,比如ElasticSearch或Sphinx Search。

© www.soinside.com 2019 - 2024. All rights reserved.