0
我需要两个表的笛卡尔乘积MINUS组合,其中两个表在一个字段中具有相同的值。从2个表中选择不等于(<>)的笛卡尔积; postgresql
SELECT
table1.field1,
table1.field2,
table2.field3,
table2.field4
FROM
table1, table2
WHERE
table1.field1 <> table2.field3;
现在,让我们假设table1和table2每个都有一百万条记录,并且这些字段被编入索引。 在合理的时间内检索结果集的最有效方法是什么? 有没有更好的方法来写这个查询?
请注意where条款中NOT EQUAL条件。我需要两个表MINUS组合的笛卡尔乘积,其中两个表在一个字段中具有相同的值。谢谢。 – zlatko
这似乎是一种非常合理的方式来生成笛卡尔产品,除非两个字段相同。 – JNevill
这是一个Tera的结果,4个Tera的字段,每个字段的内容有多少个字节?你有多少内存?如果将结果分成多个部分,可以使用结果,可以通过十个步骤中的“AND t1.f1> 0 AND t1.f1 <= 100000”来使用。两个查询之一是否有排序的密钥?你可以阅读这两个表(2兆行)的列,并将它们与编程语言结合起来,但也许postgresql足够聪明来解决问题本身。 –