我有一个包含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分钟之前)。 看起来很奇怪....