Postgresql:替代WHERE IN 各自的WHERE NOT IN [英] Postgresql: alternative to WHERE IN respective WHERE NOT IN

查看:74
本文介绍了Postgresql:替代WHERE IN 各自的WHERE NOT IN的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有几个语句可以访问非常大的 Postgresql 表,即:

I have several statements which access very large Postgresql tables i.e. with:

SELECT a.id FROM a WHERE a.id IN ( SELECT b.id FROM b );
SELECT a.id FROM a WHERE a.id NOT IN ( SELECT b.id FROM b );

他们中的一些人甚至以这种方式访问​​更多的表.提高性能的最佳方法是什么,我应该切换,即加入吗?

Some of them even access even more tables in that way. What is the best approach to increase the performence, should I switch i.e. to joins?

非常感谢!

推荐答案

JOIN 会更有效率,或者你可以使用 EXISTS:

JOIN will be far more efficient, or you can use EXISTS:

SELECT a.id FROM a WHERE EXISTS (SELECT 1 FROM b WHERE b.id = a.id)

子查询最多返回 1 行.

The subquery will return at most 1 row.

这篇关于Postgresql:替代WHERE IN 各自的WHERE NOT IN的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆