首页 > 解决方案 > 如何在 IN 语句中获取 20 万封电子邮件的信息而不会收到错误消息

问题描述

我正在尝试获取出现在不同表格中的超过 15 万封电子邮件的信息。

我的查询看起来像:

   ;with emails as (
       select distinct m.email, m.id
       from databasename.list as m
       where m.email in 
            (
            list of 150k emails
             )

然后我使用基本的选择语句来收集我需要的所有信息。

select m.email
    ,m.id
    ,poe.order_time
    ,poe.order_id
    ,poi.price
from emails as m
left join database.purchase_order_entry as poe
on m.id=poe.member_id
left join database.purchase_order_item as poi
on poe.order_id=poi.order_id
where 1=1
    and poe.order_time > '2018-11-02'

我收到以下错误消息:

查询处理器用尽了内部资源,无法生成查询计划。这是一个罕见的事件,仅适用于极其复杂的查询或引用大量表或分区的查询。请简化查询。如果您认为您错误地收到了此消息,请联系客户支持服务以获取更多信息。

如果我不能截断我的列表,我该如何解决这个问题。

标签: sqlsql-servertsql

解决方案


这么多字符无法处理,仅此而已。您需要创建一个 csv 文件并使用BULK INSERT将其导入。您不需要使用永久表,您可以使用临时表


推荐阅读