【问题标题】:Has Select Join in different databases any performance issue?在不同的数据库中选择加入是否有任何性能问题?
【发布时间】:2017-08-31 13:54:08
【问题描述】:

好吧,我知道如果这些数据库位于同一服务器和安全组中,则可以选择位于不同数据库中的连接表,如本问题 Can we use join for two different database tables? 中所述

我现在的问题是:与同一个数据库中的选择连接相比,不同数据库中的选择连接会产生性能问题吗?

【问题讨论】:

    标签: sql sql-server performance join


    【解决方案1】:

    我真的不这么认为。因为它们在同一个服务器实例上。查询时:

    Select * from sys.sysprocesses,它将显示在该特定服务器上跨所有数据库运行的所有进程。因此,从某些角度来看,我们可以这样认为,来自每个数据库的所有待处理进程都在同一台服务器上对进程步骤做出贡献。另外,如果您右键单击服务器实例,选择Activity Monitor,您可以看到Processes 和系统资源以及与该服务器性能相关的I/O,而不是数据库性能。

    如果您从graphic execution plan 中查看actual or estimated execution plan graphic icons 查询,则数据库级别没有此类图标,但表级别。 您需要的所有图形图标都可以在这里找到: https://technet.microsoft.com/en-us/library/ms175913(v=sql.105).aspx

    我认为只有当您从其他服务器实例加入相同的表时才会出现性能问题,因为即使它们是同一张表,从另一台服务器加入的逻辑也会发送查询并从服务器返回结果,这实际上取决于该服务器的性能。例如openquery()[Server].[Database].[Schema].[NameOfObject]等四部分分布式查询。这些查询将从您当前的服务器发送到目标服务器,无论它是否具有Where 条件,select * 都将在该服务器上执行,该服务器系统决定您获得结果的速度。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-05
      • 1970-01-01
      • 2021-03-21
      • 1970-01-01
      • 1970-01-01
      • 2014-11-30
      相关资源
      最近更新 更多