我正在帮助某人调试旧式查询,该旧式查询基于两个视图建立,每个视图都具有来自不同数据源的相同字段的记录。目的是将一个视图连接到另一个视图并比较每个字段,以返回两个源之间具有不同值的任何字段的记录。在where子句中比较的字段大约为100,因此在select中返回的字段大约为200。
在我们的生产环境中,运行此查询没有问题,但是在我们的测试环境中,它会旋转大约6个小时才能完成。通过反复试验,我发现如果注释掉三个字段的选择以及将这三个字段进行比较的where子句中的行,则只需不到一分钟即可完成。确实,这三个字段没有什么特别之处,可以将它们与其他100个字段区分开来,使它们的行为有所不同。
我尝试清除计划缓存并再次运行查询,但这并不能解决问题。有人看到过这样的东西吗?