带组的mysql计数运行速度很慢

标签 mysql performance count

我有以下表格 awarded_companies , tenders , grants .

有2个多对多关系

  1. awarded_companies <-> tenders
  2. awarded_companies <-> grants

我想列出属于招标的所有中标公司。

所以查询看起来像这样:

SELECT awarded_companies.*
FROM awarded_companies
JOIN awarded_company_tenders ON (awarded_company_tenders.awarded_company_id = awarded_companies.id)
GROUP BY awarded_companies.id

实际上我有很多记录,需要对结果进行分页。当我尝试计算所有 awarded_companies属于 tender查询需要 30 秒。

这里有两种计算行数的方法和 EXPLAIN EXTENDED 的一些基准:

  1. Count with subquery
  2. Count distinct

我唯一能想到的就是在 awarded_companies 中添加 2 个标志- 判断公司是否属于tender其次判断公司是否属于grant .

这样我就可以删除 joingroup by查询将如下所示:

SELECT * FROM awarded_companies WHERE has_tender=1

谁能帮我解决这个问题?

最佳答案

SELECT 计数 (awarded_companies.id) 来自 awarded_companies 加入 awarded_company_tenders ON (awarded_company_tenders.awarded_company_id = awarded_companies.id) GROUP BY awarded_companies.id

关于带组的mysql计数运行速度很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35614272/

相关文章:

javascript - 通用选择器的性能,结果矛盾?

android - 在 Android 中从 Httpclient 读取大量数据(7MB 或更多)时需要帮助

mysql - 优化多行计数

mysql - 如何获取列中每个不同值的计数?

arrays - 计算一个元素在数组中出现的次数

sql - MySQL 中无符号 smallint(6) 的最大值是多少?

mysql - 删除特定时间范围mysql的数据

MySQL 使用 JOINS 非常慢

php - 查询是否正确,除了第 9 行之外的所有行

python - 在Linux上使用xampp为django安装mysql