查询1:这是原始查询
select SQL_NO_CACHE twitter_id, ANY_VALUE(city), ANY_VALUE(screen_name)
FROM twitter_discovery_search_results
GROUP BY twitter_id
0.0051 seconds
查询2:与上面相同的查询仅包装为子查询
SELECT SQL_NO_CACHE d.* FROM
(
select twitter_id, ANY_VALUE(city), ANY_VALUE(screen_name)
FROM twitter_discovery_search_results
GROUP BY twitter_id
) as d
1.8321 Seconds
我无法理解为什么第二个查询占用的时间比原始查询多350倍?
答案 0 :(得分:1)
MySQL可能会创建一个临时表来存储派生表的结果,然后从派生表中选择所有值。如果派生表足够大,那么MySQL会将其内容写入磁盘,从而大大降低查询速度。