高效选择按列分组的最新行

爱德华多

我有一张桌子:

QUOTE
| id | value | mar_id | date |

我正在尝试为每个mar_id(市场 ID)选择最新的行我设法从下面的查询中实现了我所需要的:

SELECT 
q.*
FROM quote q
WHERE q.date = (
  SELECT MAX(q1.date)
  FROM quote q1
  WHERE q.mar_id = q1.mar_id
)

但是我发现查询速度非常慢(> 60 秒),以至于我的数据库终止了连接。

我做了一个EXPLAIN找出原因并得到结果:

解释计划

我有一个复合唯一索引QUO_UQmar_id, date这似乎是习惯。

从逻辑上讲,这似乎不是一个很难运行的查询,我该怎么做才能更有效地执行此操作?

草莓

不相关子查询的示例

SELECT x.*
  FROM quote x
  JOIN 
     ( SELECT mar_id
            , MAX(date) date
         FROM quote
        GROUP 
           BY mar_id
     ) y
    ON y.mar_id = x.mar_id
   AND y.date = x.date;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

按列分组,选择最新值

来自分类Dev

将列选择为按列值分组的行

来自分类Dev

按列分组后如何只选择行?

来自分类Dev

选择按位置列分组的前10行的总和

来自分类Dev

选择按具有最大聚合的列分组的行

来自分类Dev

按日期获取最新行,但按另一个表中的列分组

来自分类Dev

获取按属性值分组的最新行

来自分类Dev

按多列模式高效过滤行

来自分类Dev

选择最新数据并按列分组

来自分类Dev

选择最新数据并按列分组

来自分类Dev

选择分组的第一行以及其他按列分组

来自分类Dev

表的行按列分组

来自分类Dev

按一列分组,为每对列选择在一列中最少的行

来自分类常见问题

按熊猫数据框分组,然后在每组中选择最新的

来自分类Dev

按ID分组,仅选择每个的最新记录

来自分类Dev

按日期和时间选择最新的行

来自分类Dev

仅显示按特定行分组的所有数据:从具有column ='value'的按列分组的表中选择*

来自分类Dev

MySQL-选择ID下的行,并按具有最新时间戳记的列值进行分组

来自分类Dev

选择表格按熊猫分组的行

来自分类Dev

按条件分组选择所有行

来自分类Dev

MySQL:按多列分组时选择第一行或最后一行

来自分类Dev

mysql选择获取同一结果行中按列分组的行

来自分类Dev

按列分组并选择每个组的范围

来自分类Dev

按分组时选择两列的计数

来自分类Dev

MySQL:选择按两列分组的总计

来自分类Dev

如何选择按2列+ ID分组?

来自分类Dev

选择查询以按列值排除分组

来自分类Dev

按分组选择并计算两列

来自分类Dev

使用PDO提取按特定列分组的所有行,然后选择所有列