mysql LIKE查询需要> 1分钟,但混合LIKE + MATCH / AGAINST 1秒

时间:2013-10-19 11:26:33

标签: mysql sql-like match-against

我有一个包含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在使用LIKE和MATCH / AGAINST这么长时间这么快?

我主要关注的是决赛桌将有10个领域(和> 3000万条记录),搜索条件将更加复杂,包括LIKE在其他领域....但如果只有两个LIKE导致这样的延迟我想在继续之前解决问题......

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

select_type:SIMPLE
type:ALL
possible_keys: DEPTAIRPORT,ARRAIRIPORT
key: NULL
ley_len:NULL
ref: NULL
rows: 4444841
extra: USING WHERE

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

select_type:SIMPLE
type:FULLTEXT
possible_keys: DEPTAIRPORT,ARRAIRIPORT
key: ARRAIRIPORT
key_len:0
ref: NULL
rows: 1
extra: USING WHERE

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

0 个答案:

没有答案