SQL IN语句的限制

时间:2012-10-14 22:29:55

标签: mysql sql

我需要维护群发电子邮件发件人的申请。最后一个程序员做得很好,但老板觉得可以对数据库处理做一点优化。当一个活动结束时,报告会提供保存所选片段的选项。例如,我们发送了50000封电子邮件,我们希望保存打开时事通讯的人群(2000)该工具现在创建了一个重复联系人的新部分(使用INSERT),但我认为我们可以通过保存来改进工具每个联系人的身份。

我想知道如果保存带有sql IN语句的联系人会增加工具的性能,或者还有另一种方法来执行此操作。类似的东西:

  1. 创建联系人SELECT * FROM contacts

  2. 的ID列表
  3. SELECT * FROM contacts WHERE idContact IN(all_contacts_comma_separated) - >我会救 此

  4. 提前致谢

    PD:这是一个生产环境,所以在做出任何改变之前我需要确定: - (

1 个答案:

答案 0 :(得分:1)

您没有说明当前打开电子邮件的人员名单所在的位置。如果它不在数据库中,您将使用哪个代码/进程来生成IN语句列表?如果它在数据库中,为什么不JOIN表来获取信息?

无论哪种方式,当列表中有2000个项目时,我都不建议使用IN

您可能还值得阅读以下内容:

SQL Server: JOIN vs IN vs EXISTS - the logical difference

它是用SQL服务器编写的(我不确定这一切是否直接适用于MySQL)但概念很有意思,你应该在更改生产环境之前进行测试,正如eggyal的评论建议的那样。