Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我是查询优化的新手,如何在实现去相关的同时使用半连接我无法完全理解。
考虑查询
SELECT A, B FROM r WHERE r.B < SOME ( SELECT B FROM s WHERE s.A = r.A )
展示如何使用半连接操作的多集版本对上述查询进行去相关
您可以使用内部联接编写查询,如下所示:
SELECT DISTINCT r.A, r.B FROM r INNER JOIN s ON r.A = s.A WHERE r.B < s.B;
在此版本的查询中,该DISTINCT子句是必需的,因为表中的给定记录r可能会连接到表中的多个匹配项s。在您的原始版本中,不能有重复项,因为SOME采用一组记录的子句 any 总是返回一个是/否答案。
DISTINCT
r
s
SOME