现在,我需要一个查询来向所有注册用户发送邮件以执行某项任务。为此我需要他们的用户详细信息和一些我将邮寄它们的数据。
我的问题是我是否使用连接并从sql-server检索所有数据并在NodeJS中构建它们并发送邮件,或者我首先检索需要邮寄的数据今天和每个帖子,我检索相关人员邮件,然后发送邮件?
PS:服务器跨网络
答案 0 :(得分:1)
加入表格显然更有效,更容易,因为您只需要一个查询。
如果您第一次获得数据,如何在以后找到相应的人?逐个查询每个人将创建大量查询。您可以尝试使用类似WHERE person_id IN (45,77,12,23,124, ...)
的IN子句来优化查询,但创建此列表很繁琐且IN子句的长度有限,因此您必须拆分列表并将它们与或者,或创建几个查询。为什么手动,如果JOIN为你做这个?
每次到服务器的往返都很耗时。另一方面,db-server可以以非常优化的方式处理连接。
答案 1 :(得分:0)
这取决于数据。
如果您为所有用户使用相同的帖子/内容,那么第一种方法就是好的。
但随着系统的发展,情景会变得复杂。想想明天,您可能需要调度程序,它将读取用户详细信息,他们的首选项可能是邮件摘要一周/每日邮件等,邮件类别等。在这种情况下,第二个选项是好的。
可能你不会一次发送100万封邮件。您可以使用将在每个确定的时间后运行并发送邮件的调度程序。可能是另一个调度程序只会调用失败的作业等。