MySQL从大表中获取最新的条目

时间:2014-04-02 10:30:04

标签: mysql sql

我有一个包含超过50,000个条目和一些用户的表:

transactions Table:
ID
USER
VALUE
TIMESTAMP

users Table:
USER
TYPE
REGION

我想获取每个用户的最新交易。到目前为止,我正在使用以下GROUP BY语句,但它很慢(大约需要5-10秒):

select ID , max(TIMESTAMP) as TIMESTAMP from transactions group by USER;

是否有更快的语句来检索最新的条目?

2 个答案:

答案 0 :(得分:0)

首先,根据我的理解,ID列应该在事务表中保留唯一值,因此group by应根据您的要求位于USER字段中。

此外,您可以尝试以下查询。我不确定,但您可以将其时间与您的查询进行比较并相应地使用。

SELECT 
USER , TIMESTAMP 
FROM
 (SELECT USER,TIMESTAMP FROM transactions ORDER BY ID DESC) a 
GROUP BY USER;

假设USER列上会有一个索引,因为这两个表之间很常见。

答案 1 :(得分:-1)

试试这个,

select u.*,tr.* from users  as u
outer apply
    (
    select top 1 * from transactions as t
      where t.USER= u.USER
      order by t.ID desc
)as tr