0

我有一个包含 3 个字段和 500 万行的小表:

字段为 Id、DEPTAIRPORT、ARRAIRPORT、DEPT/ARR 字段为 FULLTEXT 索引

运行此代码时,需要 >1 分钟才能获得结果:

SELECT * FROM test_copy 
WHERE 
DEPTAIRPORT LIKE 'buenos%' AND 
ARRAIRPORT LIKE 'tokyo%';

但是,当我使用此查询时,需要 1 秒:

SELECT * FROM test_copy 
WHERE 
DEPTAIRPORT LIKE 'buenos%' AND 
MATCH (ARRAIRPORT) AGAINST ('tokyo*' IN BOOLEAN MODE)

使用两个 MATCH/AGAINST(而不是 LIKE)也需要 >1 分钟。

问题:为什么使用 LIKE 和 MATCH/AGAINST 时两个 LIKE 需要这么长时间?

我主要担心的是最终表将有 10 个字段(和超过 3000 万条记录),然后搜索条件将更加复杂,包括其他字段上的 LIKE ......但如果只有两个 LIKE 导致这样的延迟,我会想在继续之前解决问题...

编辑:字段是全文。EXPLAIN 显示第一个查询(LIKE + LIKE):

选择类型:简单
类型:全部
可能的键:DEPTAIRPORT,ARRARIPORT
键:空
ley_len:NULL
参考:空
行数:4444841
额外:在哪里使用

EXPLAIN 显示第二个查询(LIKE + MATCH/AGAINST):

选择类型:简单
类型:全文
可能的键:DEPTAIRPORT,ARRARIPORT
键:ARRAIRIPORT
key_len:0
参考:空
行数:1
额外:在哪里使用

第二次编辑:我重新启动了 HeidiSQL,现在 LIKE+LIKE 查询需要 10 秒(>1 分钟之前)。看起来很奇怪......

4

0 回答 0