COUNT(*) 与 GROUP BY 在一个包含 30M 行的表中



我必须从包含 3000 万行的表中提取数据。 表中的要素为visits_id(主要(survey_id company_id

我必须计算每家公司每次调查的访问次数,知道一家公司可以进行多项调查。

我做的查询是:

SELECT v.survey_id, v.company_id, COUNT(*)
FROM visit AS v
GROUP BY v.survey_id, v.company_id

主要问题是它需要很长时间。有没有办法优化查询? 还是对于SQL来说不可能做,或者不值得付出努力?

提高该查询性能的最直接方法是在survey_id, company_id上添加复合索引。

添加索引的主要缺点是写入时间较长。如果这是一个问题(或者不值得改进此查询(,那么您可以在后台定期预处理数据并将计数存储在某个地方。显然,您可能会有过时的计数。

相关内容

  • 没有找到相关文章

最新更新