【发布时间】:2015-09-03 13:30:40
【问题描述】:
我提供假设的表格和查询来解释我的问题。请原谅我的任何语法错误。
部门表:
ID Dno Dname BDate seq
1 1 A 5-Aug 0
2 1 B 3-Aug 0
3 1 B 7-Aug 1
4 1 C 2-Aug 0
以下查询返回上表中的第 1 条和第 3 条记录:
select * from Dept where BDate > (select mydate from other_table)
-- mydate is 4-Aug
然后我在查询中进行了以下更改以返回第二条记录。因为对于 Dname 'B',我们有一条 Bdate > 4-Aug 的记录。
select * from Dept D where
(SELECT MAX(BDATE)
FROM Dept D1
WHERE D1.Dno = D.Dno
AND D1.Dname = D.Dname
) > (select mydate from other_table)
上面的查询有效,但它影响了性能。我该如何优化它。
我想到了联合或移动最大查询来选择部分。但是,找不到方法。
【问题讨论】: