次のようなデータを持つ2つのテーブルがあります-
TestTable1 TestTable2
---------- ----------
Id Name DealDate Id Name DealDate
1 aaTable 2010-09-22 1 aaTable2 2010-09-23
2 bbTable 2010-09-23 2 bbTable2 2010-09-24
3 ccTable 2010-09-28 3 ccTable2 2010-09-26
4 ddTable 2010-09-25 4 ddTable2 2010-09-27
これを返すために、TestTable1 + TestTable2 の結果セットから最新のレコードを 2 つだけ取得したい-
Id Name DealDate
4 ccTable 2010-09-28
3 ddTable2 2010-09-27
これは私の現在のクエリです
SELECT TOP 2 * FROM
(
SELECT * FROM
(SELECT TOP 2 Id, Name, DealDate FROM TestTable1 ORDER BY DealDate DESC) T1
UNION ALL
SELECT * FROM
(SELECT TOP 2 Id, Name, DealDate FROM TestTable2 ORDER BY DealDate DESC) T2
) T1T2
ORDER BY DealDate DESC
これを達成するためのより良い方法(パフォーマンス/読みやすさ)を教えてください。
PS上記のテーブルはユースケースを提示するためのものであり、実際のテーブルには何千ものレコードがあります。
ありがとうございました!