我有一个查询,我正在尝试优化,但没有取得多大成功。我试图使用下面的SQL查询计算日常使用数据并返回正确的结果,但我想优化它。在这里我使用多个联合的多个子查询。我有它工作,但我正在尝试优化,所以它运行得更快。
for
数据库表架构和链接下面的一些测试数据
http://faisal-ibrahim.info/usage_info.sql
对此有任何帮助表示赞赏。我不太熟悉SQL,所以我不太精通优化这些查询。
答案 0 :(得分:1)
使用JOIN ... ON ...
语法。
但要避免FROM ( SELECT ... ) JOIN ( SELECT ... ) ON ...
将DATE(x) = '2016-02-06'
更改为
x >= '2016-02-06'
AND x < '2016-02-06' + INTERVAL 1 DAY
添加INDEX(msisdn, package_status, created)
和INDEX(package_status, created)
。
可能值得做
CREATE TEMPORARY TABLE z
SELECT ... GROUP BY DATE(created);