全文查询第一次运行缓慢然后快速运行

时间:2017-11-13 12:03:53

标签: mysql full-text-search query-optimization timing

任何人都有关于此行为的一些信息?我在同一个db这个查询上运行

SELECT
                mk.IdMedia                    
            FROM
                mediakeyword mk                  
            WHERE
                MATCH(mk.SearchText) AGAINST('+"france"' IN BOOLEAN MODE) > 0

此计划

"id"    "select_type"   "table" "type"  "possible_keys" "key"   "key_len"   "ref"   "rows"  "Extra"
"1" "SIMPLE"    "mk"    "fulltext"  "SearchText"    "SearchText"    "0" \N  "1" "Using where"

SearchText有一个FullText索引,引擎是MyISAM

奇怪的行为是我第一次运行查询时计算的时间是2,324秒,第二次是0,015,为什么?

有一种方法可以指示mysql具有相同的第二种行为吗?

1 个答案:

答案 0 :(得分:1)

FULLTEXT在InnoDB中可用;考虑迁移。

有两件事可以导致“第一个是慢;第二个是快”:

  • 第一次运行查询时,可能需要从磁盘中获取索引和/或数据块。第二次,这些块缓存在RAM中,因此速度更快。

  • “查询缓存”(如果启用)会记录查询及其结果集。因此,如果完全第二次运行相同的SELECT,它只需查找先前计算的结果。