我有一个简单的查询来对行进行分组,这需要0.0045秒。 300.000行
SELECT cid FROM table GROUP BY cid
当我添加MAX()进行查询时,需要0.65秒才能返回。
SELECT MAX(id) id, cid FROM table GROUP BY cid
如何加快查询速度?该查询在我的本地主机上运行以进行测试。 id =主键,我在cid上有索引。

最佳答案

原因是两个查询之间的差异:

  • 您的第一个查询将永远不会碰到表-它只会依赖索引
  • 您的第二个查询实际上需要命中所有行

  • 因此,要回到更理想的第一种情况,您需要一个索引,该索引可以同时提供:按cid分组和最小/最大id。您可以尝试通过在(cid,id)上创建索引来实现这一目标

    关于group-by - MySQL加快max()分组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12309224/

    10-13 02:08