【问题标题】:Which is fastest? Count in subquery or with group by哪个最快?计数子查询或分组依据
【发布时间】:2023-04-04 06:57:01
【问题描述】:

哪个最快/最有效?两者都有效。

解决方案 1. 按 id 分组:

SELECT
    *, 
    COUNT(*) AS pages 
FROM
    notis 
WHERE
    cid = 20 
GROUP BY
    n.id
ORDER BY
    nid DESC 

解决方案 2. 在子查询中计数:

SELECT
    *,
    (select count(*) FROM notis WHERE cid=20) AS count
FROM
    notis
WHERE
    cid = 20
ORDER BY
    nid DESC

【问题讨论】:

  • Downvoter:您不喜欢我好奇的问题的原因将不胜感激。提前致谢!
  • 这些看起来不会产生等效的输出。
  • 第一个是无效的(标准)SQL,MySQL 不会拒绝它,而是返回随机数据。

标签: mysql sql optimization query-optimization


【解决方案1】:

解决方案 1 是最佳且快速的: 因为解决方案 2 有子查询

但是您必须像这样更改您的查询:

  SELECT *, COUNT(*) AS pages 
  FROM notis 
  WHERE cid = 20 
  GROUP BY nid
  ORDER BY nid DESC 

您更改了 GROUP BY 和 ORDER BY 的位置。

我不知道您是在寻找 count(*) 还是想要按每个 nid 计数。如果 count(*) 则考虑不使用 GROUP BY

 SELECT *, COUNT(*) AS pages 
 FROM notis 
 WHERE cid = 20 
 ORDER BY nid DESC 

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2017-10-06
  • 2021-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多