gpt4 book ai didi

sql - 我的用例能否在不影响性能的情况下合并到单个查询中?

转载 作者:搜寻专家 更新时间:2023-10-30 20:31:41 25 4
gpt4 key购买 nike

我主要着眼于提高查询的性能,以及是否能够在单个查询中解决我的一个用例,如下所述:

涉及到2个表:

Table 1: EMPLOYEE (column1, column2, email1, email2, column5, column6)
Table 2: EMAILLIST (email)

我的要求是,我想从 EMPLOYEE 表中获取/获取所有记录,条件是 email1 或 email2 在 EMAILLIST 表中没有匹配的条目。简单来说,如果 email1 或 email2 在 EMAILLIST 表中匹配,那么这些记录应该被忽略。

在这种情况下,EMPLOYEE.EMAIL1、EMPLOYEE.EMAIL2 和 EMAILLIST.EMAIL 将始终存储单个电子邮件地址。

如果重要的话,我们正在使用 PostgreSQL v8.2.3。

欢迎任何指点/想法/逻辑。

更新:目前,我们以这种方式实现:从 EMPLOYEE 表中获取所有记录并存储在 Java 对象中,对于每个条目(for 循环),这依次检查 EMAILLIST 表,这在性能方面代价高昂。

最佳答案

对于我处理过的每个 rdbms,处理这个问题的最有效方法是使用外连接来处理它:

SELECT whatever
FROM employee AS e
LEFT JOIN emaillist AS em1 ON e.email1 = em1.email
LEFT JOIN emaillist AS em2 ON e.email2 = em2.email
WHERE em1.id IS NULL
AND em2.id IS NULL

一般来说,我认为您会发现将数据库查询放入循环中的任何情况,嗯,都是次优的。 :)

关于sql - 我的用例能否在不影响性能的情况下合并到单个查询中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4612710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com