Sql server 一对多以最有效的方式连接到最后修改的记录

Sql server 一对多以最有效的方式连接到最后修改的记录,sql-server,performance,join,one-to-many,Sql Server,Performance,Join,One To Many,我意识到以前有人问过这个问题,但我想知道最有效的解决方案 我有两张桌子 事件id、客户电子邮件 客户电子邮件,上次修改 我将这两个表合并在一起,只想要最后修改日期最长的客户。客户表非常庞大,因此我们想知道最好的方法。撇开索引不谈,这是您可以使用的查询: SELECT <columns you want> FROM Event AS E JOIN Customer AS C ON C.Customer_Email = E.Customer_Email JOIN ( SELECT C

我意识到以前有人问过这个问题,但我想知道最有效的解决方案

我有两张桌子

事件id、客户电子邮件

客户电子邮件,上次修改


我将这两个表合并在一起,只想要最后修改日期最长的客户。客户表非常庞大,因此我们想知道最好的方法。

撇开索引不谈,这是您可以使用的查询:

SELECT <columns you want>
FROM Event AS E
JOIN Customer AS C
  ON C.Customer_Email = E.Customer_Email
JOIN ( SELECT C1.Customer_Email, MAX(C1.Last_Modified) AS LastModified
       FROM Customer AS C1
       GROUP BY C1.Customer_Email
) AS C2
ON C2.Customer_Email = C.Customer_Email
AND C2.LastModified = C.Last_Modified
使用行号


那么,这更多的是关于如何为数据编制索引,而不仅仅是查询。。。。我可以向您展示一个查询,但是如果没有正确的操作,性能可能会很差indexed@t-谢谢你的回复。你能给我看看这个查询吗?我可以测试一下。谢谢
select * 
from 
(
select *, Row_number() over (partition by Event_ID order by Last_Modified desc) rn
from Event 
    inner join Customer 
    on Event.Customer_Email = Customer.Customer_Email
) v
where rn = 1