根据最新时间戳选择记录

哨灯

我见过类似的问题,但是,我找不到最佳的解决方案。我需要优化此查询。

itemid           state_id                timestamp
======================================================
  1              1              2012-08-11 00:00:00
  1              2              2012-08-12 00:00:00
  1              3              2012-08-13 00:00:00
  2              1              2012-08-10 00:00:00
  2              2              2012-08-13 00:00:00   <=== lastest  state_id =2
  3              1              2012-08-10 00:00:00
  3              2              2012-08-13 00:00:00
  3              4              2012-08-15 00:00:00
  4              1              2012-08-10 00:00:00
  4              3              2012-08-13 00:00:00
  4              2              2012-08-16 00:00:00   <=== lastest state_id =2
  5              1              2012-08-16 00:00:00

我需要根据最新的时间戳和state_id = 2选择itemid。

我有这个查询http://sqlfiddle.com/#!2/a3d41/1/0,但是我认为它不是为大表优化的,有什么想法吗?谢谢!

SELECT *
FROM hops h
WHERE h.timestamp = (
SELECT MAX( h2.`timestamp` )
FROM hops h2
WHERE h.`itemid` = h2.`itemid` )
AND h.state_id = 2
Hituptony
SELECT * FROM hops a
inner join (SELECT itemid, MAX(timestamp) FROM hops group by itemid) b
ON a.itemid  = b.itemid
 where a.STATE_ID = 2

这将对子查询进行内部联接,该子查询实际上应仅选择与关联表中的MAX时间戳值关联的记录。

您将以这种方式选择较少的行,通过内部联接,该行将仅返回您在子查询中选择的行,但通过执行SELECT *指定结果输出

现在,您有了一个联接,而不是使用WHERE子句,这将使SQL引擎在表上执行查找的次数最小化。或表会扫描您所说的任何内容。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

根据列选择最新的时间戳

来自分类Dev

MySQL仅选择2天以上的最新记录(时间戳)

来自分类Dev

如何选择具有最新时间日期戳的记录

来自分类Dev

Hive Data根据时间戳选择最新值

来自分类Dev

Oracle:根据Created_On时间戳删除旧记录,为用户保留最新的n条记录

来自分类Dev

Oracle:根据Created_On时间戳删除旧记录,为用户保留最新的n条记录

来自分类Dev

根据时间选择记录

来自分类Dev

SQL JOIN-根据ID和时间戳选择最新的时间间隔

来自分类Dev

如何根据时间戳获取最新记录但不从laravel中的表中复制?

来自分类Dev

获取SQLite中最新时间戳的记录

来自分类Dev

获取SQLite中最新时间戳的记录

来自分类Dev

根据最新的时间戳加载 tableView

来自分类Dev

从SQLite表中选择一条记录-并检查其时间戳是否为最新的

来自分类Dev

从时间戳为最新的表中选择

来自分类Dev

如何根据时间戳查找记录

来自分类Dev

根据时间戳删除本地存储记录

来自分类Dev

如何根据时间戳过滤 documentdb 记录?

来自分类Dev

分组并根据创建的时间戳选择最后一条记录

来自分类Dev

选择具有最新时间戳记的记录

来自分类Dev

根据时间间隔x中的时间戳处理文件记录

来自分类Dev

根据日期时间字段选择最新结果

来自分类Dev

CQL-按ID和最新时间戳获取记录

来自分类Dev

Access SQL-如何获取最新记录和时间戳之前的最新记录?

来自分类Dev

使用MORE命令选择具有最新时间戳的文件

来自分类Dev

根据时间戳降序检索最近的100条记录

来自分类Dev

如何根据状态或最近更新的时间戳获取记录?

来自分类Dev

根据时间戳而不是Oracle来获取记录

来自分类Dev

如何根据时间戳和布尔值查询记录?

来自分类Dev

如何让mongoose-ttl根据时间戳分别删除记录

Related 相关文章

  1. 1

    根据列选择最新的时间戳

  2. 2

    MySQL仅选择2天以上的最新记录(时间戳)

  3. 3

    如何选择具有最新时间日期戳的记录

  4. 4

    Hive Data根据时间戳选择最新值

  5. 5

    Oracle:根据Created_On时间戳删除旧记录,为用户保留最新的n条记录

  6. 6

    Oracle:根据Created_On时间戳删除旧记录,为用户保留最新的n条记录

  7. 7

    根据时间选择记录

  8. 8

    SQL JOIN-根据ID和时间戳选择最新的时间间隔

  9. 9

    如何根据时间戳获取最新记录但不从laravel中的表中复制?

  10. 10

    获取SQLite中最新时间戳的记录

  11. 11

    获取SQLite中最新时间戳的记录

  12. 12

    根据最新的时间戳加载 tableView

  13. 13

    从SQLite表中选择一条记录-并检查其时间戳是否为最新的

  14. 14

    从时间戳为最新的表中选择

  15. 15

    如何根据时间戳查找记录

  16. 16

    根据时间戳删除本地存储记录

  17. 17

    如何根据时间戳过滤 documentdb 记录?

  18. 18

    分组并根据创建的时间戳选择最后一条记录

  19. 19

    选择具有最新时间戳记的记录

  20. 20

    根据时间间隔x中的时间戳处理文件记录

  21. 21

    根据日期时间字段选择最新结果

  22. 22

    CQL-按ID和最新时间戳获取记录

  23. 23

    Access SQL-如何获取最新记录和时间戳之前的最新记录?

  24. 24

    使用MORE命令选择具有最新时间戳的文件

  25. 25

    根据时间戳降序检索最近的100条记录

  26. 26

    如何根据状态或最近更新的时间戳获取记录?

  27. 27

    根据时间戳而不是Oracle来获取记录

  28. 28

    如何根据时间戳和布尔值查询记录?

  29. 29

    如何让mongoose-ttl根据时间戳分别删除记录

热门标签

归档