2009-12-30 36 views

回答

0

如果我正确理解你,你有两个结构相同,但数据集不同的结果集(比如选择不同的子句)。

如果这是正确的,我认为更好(更高效)的方法是尝试在数据库级别解决此任务。也许使用临时/累积表和/或存储过程。

使用CF几乎肯定会需要大量的循环,这对于大型数据集可能不合适。尽管我为使用中间存储的小数据集做了这样的事情:将一个结果集转换为结构体,然后通过检查结构键来遍历第二个查询。

5

如果您正在寻找简单地决定两个查询是否正是相似的,那么你可以这样做:

if(serializeJSON(query1) eq serializeJSON(query2)) ... 

这两个查询转换为字符串和比较字符串。

如果你正在寻找更多的细微差别,我相信Sergii的方法(转换为结构,比较键)可能是正确的方法。您可以通过首先添加简单的检查来“防范”它...列列表是否匹配?记录数是否相同?这样,如果其中任何一项检查失败,您就知道这些查询不可能是等效的,因此可以安全地返回false,从而避免完整比较的性能下降。

+0

优秀的提示,这个招数为我工作,我与我的整个团队分享! –