我正在使用 SQL Server 2008 Express 版本,并且我已经处理了两天的问题,该问题似乎是运行查询时的交叉连接。
我想直观地知道每个连接操作返回的集合。
有什么工具可以给你中间的查询结果吗?我在谷歌上找不到。
编辑
我用书中最古老的技巧解决了这个问题,在加入之前手动运行查询以查看交叉连接问题到底发生在哪里。并发现有一个映射数据库为一个连接发送了 3 个结果,而不是一个(因为它需要两个条件来实现正确的内部连接,而不是一个)。
我正在使用 SQL Server 2008 Express 版本,并且我已经处理了两天的问题,该问题似乎是运行查询时的交叉连接。
我想直观地知道每个连接操作返回的集合。
有什么工具可以给你中间的查询结果吗?我在谷歌上找不到。
我用书中最古老的技巧解决了这个问题,在加入之前手动运行查询以查看交叉连接问题到底发生在哪里。并发现有一个映射数据库为一个连接发送了 3 个结果,而不是一个(因为它需要两个条件来实现正确的内部连接,而不是一个)。
据我所知,没有一个会向您显示确切的结果——维护挂钩以便此类工具可以监视正在发生的事情,这在生产中可能效率低下(毫无疑问,MS 可以在他们的开发版本中做到这一点)。虽然中间结果有时会转储到临时表以供进一步处理,但它们通常不会作为一个整体具体化,而是在生成时在查询引擎的各个部分之间流式传输。
如果在 SQL Server Management Studio 中运行查询,则可以请求输出所使用的查询计划。虽然这不会为您提供完整的中间结果,但它会向您显示正在执行的比较以及在每个步骤中大约有效输出了多少行 - 如果您在一对大表之间有笛卡尔积,这应该可以清楚地表明在哪里在这个过程中发生了。
如需更具体的帮助,您需要在问题中添加更多详细信息(请将其添加到问题中,而不是在此处作为评论,这样以后访问此页面的人就可以更好地了解新信息):