Mysql查询使用简单包装器花费300倍的时间

时间:2017-05-11 10:32:13

标签: mysql subquery

查询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倍?

1 个答案:

答案 0 :(得分:1)

MySQL可能会创建一个临时表来存储派生表的结果,然后从派生表中选择所有值。如果派生表足够大,那么MySQL会将其内容写入磁盘,从而大大降低查询速度。