您将如何证明两个查询在功能上是等效的,例如它们将始终都返回相同的结果集。
由于在执行此操作时会想到一个特定的查询,因此最终按照@dougman的建议进行操作,在有关表的约10%的行中进行比较并比较结果,以确保没有不合适的结果。
最好的办法是根据给定的一组输入比较两个查询输出,以查找任何差异。要说它们对于所有输入将始终返回相同的结果,实际上取决于数据。
对于Oracle,最好的方法之一(如果不是最好的话)(非常有效)在此处(Ctrl+F比较两个表的内容): http://www.oracle.com/technetwork/issue- archive/2005/05-jan/o15asktom-084959.html
Ctrl
F
归结为:
select c1,c2,c3, count(src1) CNT1, count(src2) CNT2 from (select a.*, 1 src1, to_number(null) src2 from a union all select b.*, to_number(null) src1, 2 src2 from b ) group by c1,c2,c3 having count(src1) <> count(src2);