【发布时间】:2019-08-10 02:11:10
【问题描述】:
我现在处于困境中,非常感谢您的建议。 从我们的管理人员那里得到了一份包含 500000 个电子邮件地址的列表,并在我们的数据库中检查它们是否在那里注册。 问题在于用户数量,原因 “select * from db..tablename where email in (.....)” 不适用于那么大的列表。 到目前为止,我唯一的想法是将列表拆分为更小的部分,但这似乎非常无效且耗时。 有什么方法可以让它更快更智能?
【问题讨论】:
-
将数据加载到表中并使用
join、in或exists。 -
你能告诉我们一些你尝试过的东西吗?或者让我们了解正在使用的数据库结构(即表、列等)?
-
嗨,戈登,这是我的第一个想法,但是当您向表中插入时,每次加载的行数限制为 1000 行,所以这对我来说是个大问题。我能做些什么来避免限制?嗨 hmiedema9, 基本上,要完成这项工作,我需要使用一张大桌子(我们称之为“客户”)并搜索它。它有一个简单的结构:用户 ID、名字、姓氏、电子邮件、国家、注册日期。我试图列出我们数据库中存在的客户列表:选择用户 ID,来自 db..clients 的电子邮件,其中电子邮件在 (.....)
-
@Tanya this blog article 可能会为您提供快速插入的解决方案。基本上,您必须在一个循环中进行 1000 行的批量插入。将所有内容插入表格后,继续 Gordon 解释的方式(-> 加入、加入或存在)
-
@David3103 谢谢你的文章,我会检查的!