【发布时间】:2010-04-16 01:37:27
【问题描述】:
我在查询时遇到性能问题。
第一个表是一个 Customer 表,其中包含数百万条记录。客户表有一列电子邮件地址和一些关于客户的其他信息。
第二个表是一个只包含电子邮件地址的 CommunicationInfo 表。
而我在这里想要的是; CommunicationInfo 表中的电子邮件地址在 Customers 表中重复了多少次。表现最好的查询可能是什么。
我可以解释这种情况的基本查询是;
Select ci.Email, count(*) from Customer c left join
CommunicationInfo ci on c.Email1 = ci.Email or c.Email2 = ci.Email
Group by ci.Email
但可以肯定的是,执行过程大约需要 5、6 分钟。
提前致谢。
【问题讨论】:
-
CommunicationInfo中有多少条记录? -
Customer和CommunicationInfo是什么关系?我在想每个Customer行有很多CommunicationInfo行,是这样吗? -
@KM:第二个表是一个只包含电子邮件地址的 CommunicationInfo 表。我相信这是一个查找表,每封电子邮件只添加一次。
-
@Quassnoi,但每次为客户发送通信时,它是一行,还是类似的东西。如果是这样,它会比客户表大。
-
@KM:你可能是对的。那么我们需要等待答案。
标签: sql-server tsql