需要优化查询效率 - 查询使用max(date)

时间:2017-07-25 18:20:31

标签: mysql greatest-n-per-group

我遇到了一个问题,即我的查询将永远用于提取数据。我需要一个如何加快这个过程的策略。表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;
谢谢魏。这大大提高了查询的速度。我知道我的查询是以非有效的方式进行的。

0 个答案:

没有答案