我遇到了一个问题,即我的查询将永远用于提取数据。我需要一个如何加快这个过程的策略。表1是customernumber的特定列表,该表包含4257个customernumber。表2包含每日的交易活动,可能有超过100万行数据。
我需要根据表1中列出的客户编号的max(saledate)从表2中提取交易数据。
select max(saledate), Name, customernumber
from Table2
where customernumber in (select * from Table1);
这个查询需要永恒。我怎样才能加快速度呢?我不介意分批处理。
Table1 Table2
CustomerNumber CustomerNumber Name SaleDate TransactionAmount
1 | 5 Bill 3/1/2014 $20
2 | 5 Bill 3/21/2015 $30
3 | 1 John 3/1/2016 $0
4 | 9 Jane 1/1/2014 $10
5 | 11 Josh 3/1/2016 $5
7 | 5 Bill 6/8/2015 $60
6 | 7 Nair 7/21/2014 $17
2 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
解答:
select * from table1 a
inner join
(
select max(saledate), name, customernumber, transactionamount
from table2 where transactionamount <> 0 group by customernumber) b
on a.customernumber = b.customernumber;
谢谢魏。这大大提高了查询的速度。我知道我的查询是以非有效的方式进行的。