我在使用下面的SQL查询时出现问题...它将我的服务器上的CPU挂起并最终超时而不返回结果。查询的格式是否正常?
BD
SELECT dfa_data_dump.date,
campaignname,
placementgroup,
placementstartdate,
placementenddate,
placementgrouptotalbookedunits,
placementgroupid,
sitename,
dfa_data_dump.placementid,
placement,
dfa_data_dump.placementrate,
placement_rates.ratetype,
placementtotalbookedunits,
placementsize,
time_dimension.month,
Sum(impressionsdelivered),
Sum(clicksrecorded),
Sum(totalactivities),
Sum(totalcost)
FROM dfa_data_dump
INNER JOIN time_dimension
ON time_dimension.date = dfa_data_dump.date
INNER JOIN placement_rates
ON placement_rates.placementid = dfa_data_dump.placementid
GROUP BY dfa_data_dump.date,
campaignname,
placementgroup,
placementgrouptotalbookedunits,
placementgroupid,
sitename,
placementid,
placement,
placementrate,
placementtotalbookedunits,
placementsize,
time_dimension.month
答案 0 :(得分:1)
我猜你的查询起源于CGI,然后超时然后杀死mysql查询。来自CGI的直接数据库意味着您的查询必须快速,否则您会遇到这种麻烦。
所以你需要让它更快,或者你把提取放入一个非时间关键的后端脚本。
您可以使用索引显着提高性能 - 为您开始加入的列编制索引。这可能足以解决它,下一个是查看你的GROUP BY列 - 它们中有很多,这可能会伤害你。它取决于你将它分组的数据量,以及有多少不同的值出现在那里。