【发布时间】:2018-01-02 16:16:46
【问题描述】:
表 1:
| account_no | **other columns**...
+------------+-----------------------
| 1 |
| 2 |
| 3 |
| 4 |
表 2:
| account_no | TX_No | Balance | History |
+------------+-------+---------+------------+
| 1 | 123 | 123 | 12.01.2011 |
| 1 | 234 | 2312 | 01.03.2011 |
| 3 | 232 | 212 | 19.02.2011 |
| 4 | 117 | 234 | 24.01.2011 |
我有多个连接查询,查询中的一个表(表 2)是有问题的,因为它是一个计算许多其他事物的视图,这就是为什么对该表的每个查询都是昂贵的。从表 2 中,对于表 1 中的每个 account_no,我需要具有最大 TX_NO 的整行,这就是我的做法:
SELECT * FROM TABLE1 A LEFT JOIN
( SELECT
X.ACCOUNT_NO,
HISTORY,
X.BALANCE
FROM TABLE2 X INNER JOIN
(SELECT
ACCOUNT_NO,
MAX(TX_NO) AS TX_NO
FROM TABLE2
GROUP BY ACCOUNT_NO) Y ON X.ACCOUNT_NO = Y.ACCOUNT_NO) B
ON B.ACCOUNT_NO = A.ACCOUNT_NO
据我了解,它会对 Table2 中的所有行进行内连接,然后左连接需要account_no 与 Table1 一起使用,这就是我想避免。
我的问题:有没有办法只为 Table1 中的那些帐户找到max(TX_NO) 而不是全部查找?我认为这将有助于提高查询速度。
【问题讨论】: