我有以下疑问

SELECT t1.accountid, t1.accountbalance
FROM transactionstable t1
WHERE transactiondate = (SELECT MAX(transactiondate)
            FROM transactionstable
            WHERE accountid = t1.accountid);

是否有任何方法可以替换第二个select,例如使用having子句,如何做,因为我需要它很快(accountid是外键),transactiondate上有一个索引。
谢谢您!!

最佳答案

您可以使用自最大值的每个cc组而不是

SELECT t1.accountid,
t1.accountbalance
FROM transactionstable t1
JOIN (SELECT accountid ,MAX(transactiondate) transactiondate
            FROM transactionstable
            GROUP BY accountid ) t
USING (transactiondate ,accountid )

JOIN上的复合索引也有帮助
create index my_idx on my_table(transactiondate ,accountid);

关于mysql - mysql以下程序如何加速?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23005693/

10-11 14:45