表结构
表中大概有 500 多万条数据,表每天在以 11 万条数据增长
现在执行 sql
SELECT COUNT(*) AS `num`, `trail` FROM (
SELECT `device`, `trail` FROM `ts_devices_count`
WHERE (`created_at` >= '2017-02-07') AND (`created_at` <= '2017-02-14')
GROUP BY `device`
) `temp` GROUP BY `trail`
在子查询中的表存在索引,子查询返回的结果表 temp 大概 11 万条数据,
整个 sql 执行下来大概需要 10 秒钟左右执行完,
如果单独执行子查询中 sql
SELECT `device`, `trail` FROM `ts_devices_count`
WHERE (`created_at` >= '2017-02-07') AND (`created_at` <= '2017-02-14')
GROUP BY `device` limit 200 offset 27384;
耗时大概是 1.39 秒
有没有办法能够优化到 1 秒内???或者换别的某种数据库能加快????
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.