sql-server - 直接从远程数据库连接两个表或连接从远程数据库查询表的两个视图之间的区别
问题描述
我在两个单独的服务器中有三个 SQL Server 数据库。
- 服务器 R 中的数据库 DB0(版本 2014 SP1 远程数据库)
- 服务器 R 中的数据库 DB1(版本 2014 SP1 远程数据库)
- 服务器 L 中的数据库 DB2(版本 2012 SP3 本地数据库)
数据库 DB1 中有 2 个视图 T1 和 T2 查询 DB0 中的一些表,我想从数据库 DB2 加入它。(注意:由于其他一些限制,我不应该直接查询 DB0)
我知道我可以使用以下 select 语句从数据库 L 中加入它:
Select * from R.DB1.DBO.T1 T1 Left join R.DB2.DBO.T2 T2 on T1.ID = T2.ID;
但是,因为我已经在 DB2 中为这两个视图创建了一个视图。
Create view DB1_T1 as Select * from R.DB1.DBO.T1;
Create view DB1_T2 as Select * from R.DB1.DBO.T2;
实际上,我可以在 DB2 中简单地加入这两个视图。
select * from DB1_T1 T1 left join DB1_T2 T2 on T1.ID = T2.ID;
那么我可以问一下,我的第一个查询和第二个查询之间的数据库工作负载是否有任何差异:
1st: Select * from R.DB1.DBO.T1 T1 Left join R.DB2.DBO.T2 T2 on T1.ID = T2.ID;
2nd: select * from DB1_T1 T1 left join DB1_T2 T2 on T1.ID = T2.ID;
解决方案
推荐阅读
- node.js - 在数组nodejs mongoose JOI上存储一个包含2个值的数组
- java - 解决子模块以外的依赖关系
- macos - macOS 上奇怪的并行部分 OpenMP 行为
- gradle - gradle:如何在同一个地方配置所有子项目插件?
- github - 做 git add (and) commit 的最佳实践是什么
- reactjs - 在 react-typescript 项目中创建后端 typescript 模块
- bash - 期望/Bash 脚本中的超时
- tizen - Tizen 无法在本机应用程序中写入文件
- django - 无法将属性添加到 __init__ 的 ModelForm 字段
- actionscript-3 - 逐步增加变量值