Mysql 5.7

时间:2017-01-31 06:21:18

标签: mysql full-text-indexing mysql-5.7

我们最近将Mysql Dev服务器从5.6.27升级到5.7.15。 升级后,我们面临着全文索引的一些问题。

在我们的案例中查询是:

SELECT * FROM 
    (SELECT * FROM TABLENAME WHERE COLUMN2=KEYWORD2)FOO
WHERE MATCH(COLUMN1) AGAINST(KEYWORD IN BOOLEAN MODE)

P.N我们使用子查询过滤行,因为表有超过4500万行。

升级前查询用于在几秒钟内运行(最多1-2秒)。但升级后查询需要几分钟。

在检查计划后,我们发现查询正在被优化为以下格式,因为在5.7.15中有一些使用派生表的optmization。

SELECT * FROM TABLENAME
WHERE COLUMN2=KEYWORD2 AND MATCH(COLUMN1) AGAINST(KEYWORD IN BOOLEAN MODE).

因此我们通过使用derived_merge = off更改optimizer_switch变量来禁用派生表marge。

但是它开始给出错误 - 找不到与列列表匹配的FULLTEXT索引

在进一步调查中,我们发现在mysql 5.7.6之后,内部临时表引擎从myisam更改为innodb。 所以我们将internal_tmp_disk_storage_engine更改为myisam(全文索引以布尔模式运行而不创建索引)

然后它开始给出错误 - 无法在物化子查询上创建全文索引。

我们尝试从optmizer switch变量中禁用实现。但id没有帮助。 需要帮助来解决这个问题。

0 个答案:

没有答案
相关问题