我有一个奇怪行为的查询,因为在某些情况下它需要 120 秒和另外 250 秒。我必须尽量减少执行时间,但找不到帮助我改善查询运行时间的指南。
包含信息的表格具有以下特征:
- 所有字段都重复
- 它有8亿条记录
- 进程 14.2 GB
查询是这样的:
SELECT
todayInfo.client AS Client,
todayInfo.todayInfo AS Today,
todayInfo.dayAgoInfo AS DayAgo,
todayInfo.threeDaysAgo AS ThreeDaysAgo,
todayInfo.weekAgo AS weekAgo,
FROM (
SELECT
client,
SUM(IF( bp_Time BETWEEN TIMESTAMP('2016/01/01')
AND TIMESTAMP('2016/01/31'),1,0)) AS todayInfo,
SUM(IF( bp_Time BETWEEN DATE_ADD(TIMESTAMP('2016/01/01'), - 1,"DAY")
AND DATE_ADD(TIMESTAMP('2016/01/31'), - 1,"DAY"),1,0)) AS dayAgoInfo,
SUM(IF( bp_Time BETWEEN DATE_ADD(TIMESTAMP('2016/01/01'), - 3,"DAY")
AND DATE_ADD(TIMESTAMP('2016/01/31'), - 3,"DAY"),1,0)) AS threeDaysAgo,
SUM(IF( bp_Time BETWEEN DATE_ADD(TIMESTAMP('2016/01/01'), - 8,"DAY")
AND DATE_ADD(TIMESTAMP('2016/01/31'), - 8,"DAY"),1,0)) AS weekAgo
FROM
[dataset.table]
GROUP BY
client
) AS todayInfo
ORDER BY
Today DESC
LIMIT 10
有一个指南或提示可以帮助我优化运行时,不仅是这个查询,还有未来的查询?