gpt4 book ai didi

sql-server - SQL 服务器 2005 : Select that Joins Tables from a Remote Server Runs Too Slowly - When I "select min(column)"

转载 作者:行者123 更新时间:2023-12-04 18:20:02 25 4
gpt4 key购买 nike

更新:经过一些试验后,我发现当我调用“SELECT min(column) FROM theTableValuedFunction()”时似乎比较慢。

我将调用本地服务器 ServerLocal 和另一个远程服务器 ServerForeign。我在 ServerLocal 的表值函数中有一个 SQL 查询,如下所示:

SELECT columns
FROM ServerForeign.database.tableA
JOIN ServerForeign.database.tableB ON columns
JOIN ServerForeign.database.tableC ON columns
JOIN ServerForeign.database.tableD ON columns
JOIN ServerForeign.database.tableE ON columns
JOIN ServerForeign.database.tableF ON columns
WHERE conditions

所以这是我的问题:

当我运行它时,ServerLocal 是将整个查询传输到 ServerForeign 并要求它自己进行连接并在一次操作中取回结果,还是它获取整个表,不必要地传输所有内容只是为了过滤它/连接他们在 ServerLocal 上?

表值函数中的“WHERE条件”很笼统;在调用表值函数的各个地方,它进一步适用于 where 条件。将那些 where 子句向上移动到表值函数代码中是否可以获得任何效率,还是没有区别?

将表值函数放在 ServerForeign 上并从 ServerLocal 调用它是否会有很大的好处,或者我是否仍然会因为传输数据而招致同样的缓慢?如果我确实将表值函数移动到 ServerForeign,并且 ServerLocal 在它调用表值函数的地方应用 WHERE 子句,那么 SQL Server 是否足够聪明,可以将该 WHERE 子句从 ServerLocal 传输到 ServerForeign 并使用它来减少传输的行,还是它会无意识地返回所有行并丢弃不匹配的行?

出于各种外部原因,我宁愿不必在 ServerForeign 上放置任何代码。如果有一种方法可以在 ServerLocal 上运行所有 SQL 代码并且仍然有效地处理来自 ServerForeign 的数据,那将是更可取的。

最佳答案

我自己遇到过这个。很多时候,远程表将被复制到本地数据库以执行查询。尝试删除远程数据库上的任何“where”子句标准,它应该会加快速度。

显然这不是解决方案,但大多数人建议创建一个 SP 或在远程数据库上查看并调用它。

因此在您的情况下,如果您创建 View ,请确保 WHERE 子句在远程服务器上,至少对于来自远程表的列。

关于sql-server - SQL 服务器 2005 : Select that Joins Tables from a Remote Server Runs Too Slowly - When I "select min(column)",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2327756/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com