我在下面的SQL查询中遇到问题...它将 CPU 固定在我的服务器上,并最终超时而不返回结果。查询的格式看起来正常吗?
屋宇 署
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
我猜你的查询起源于 CGI,并且超时然后杀死 mysql 查询。来自CGI的直接数据库意味着您的查询必须快速,否则您会遇到此麻烦。
因此,您要么需要使其更快,要么将获取放入时间不重要的后端脚本中。
您可能可以使用索引显着提高性能 - 首先索引要加入的列。这可能足以修复它,下一个是查看您的 GROUP BY 列 - 其中有不少,正是这一点可能会伤害您。这有点取决于您将其分组的数据量,以及其中显示多少个不同的值。