我正在使用MySQL数据库来查询其中一个巨大的表格,这需要花费太长的时间5-6秒,有时需要10-20秒。
SELECT theminutes.theminute, IFNULL(summary.`costweek`,0) total_cost,IFNULL(summary.`timeweek`,0) total_time
FROM (
SELECT DATE(NOW())-INTERVAL seq.seq DAY theminute
FROM (
SELECT 0 AS seq
UNION ALL SELECT 1 UNION ALL SELECT 2
UNION ALL SELECT 3 UNION ALL SELECT 4
UNION ALL SELECT 5 UNION ALL SELECT 6
) seq
) theminutes
LEFT JOIN (
SELECT DATE(cdr.starttime) theminute,
COALESCE(SUM(`sessionbill`),0) `costweek`,
COALESCE(SUM(`sessiontime`),0) `timeweek`
FROM cc_call cdr
WHERE (DATE(cdr.starttime) >= DATE(NOW()) - INTERVAL 6 DAY) AND cdr.accountcode = {$user_id} AND cdr.direction = 'outbound'
GROUP BY DATE(cdr.starttime)
) summary USING (theminute)
ORDER BY theminutes.theminute
当我在此查询中运行“EXPLAIN”时,我得到了这个:
实时表包含大约1000万行。如果我可以改进我的查询或者我需要优化我的表格,请指导我。
编辑:
的输出
SHOW CREATE TABLE cc_calls