我想为以下加入提供一些帮助.我有一个表(大约有2000万行),包括:
MemberId(主键)| Id(主键)| TransactionDate | 平衡
我想在一个查询中为所有客户获取最新的余额.我知道我可以做这样的事情(我只是从记忆中写下来的).但这种方式非常慢.
SELECT *
FROM money
WHERE money.Id = (SELECT MAX(Id)
FROM money AS m
WHERE m.MemberId = money.MemberId)
Run Code Online (Sandbox Code Playgroud)
还有其他(更快/更智能)的选择吗?
在我经历过的所有优化教程和截屏视频中,连接总是优于子查询.使用子查询时,将为每个比较执行子查询,其中仅与连接一起执行.
SELECT *
FROM money m
INNER JOIN (
SELECT memberId, MAX(id) AS maxid
FROM money
GROUP BY memberId
) mmax ON mmax.maxid = m.id AND mmax.memberId = m.memberId
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1425 次 |
| 最近记录: |