查询 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 倍?
最佳答案
MySQL很可能会创建一个临时表来存储派生表的结果,然后从派生表中选择所有值。如果派生表足够大,MySQL 会将其内容写入磁盘,从而显着减慢查询速度。
关于使用简单包装器,Mysql 查询花费的时间多出 300 倍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43912906/