任何人都有关于此行为的一些信息?我在同一个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具有相同的第二种行为吗?
答案 0 :(得分:1)
FULLTEXT
在InnoDB中可用;考虑迁移。
有两件事可以导致“第一个是慢;第二个是快”:
第一次运行查询时,可能需要从磁盘中获取索引和/或数据块。第二次,这些块缓存在RAM中,因此速度更快。
“查询缓存”(如果启用)会记录查询及其结果集。因此,如果完全第二次运行相同的SELECT
,它只需查找先前计算的结果。