我们目前要求将财务交易纳入预算数据库以进行报告。目前,我们抓住所有财务记录(慢查询)然后我们抓住所有预算。然后,我们进行合并连接,将财务记录过滤到我们预算的那些。执行此操作的理想方法是首先提取所有预算,将其提供给另一个组件,然后生成一个查询,该查询仅提取所需的事务。
示例:
TableA
中的 DatabaseA
有一个名为FakeId
的标识列。
TableB
中的 DatabaseB
具有相同的标识列;但是,TableB
没有与TableA
的一对一映射。相反,“映射”(如果它存在)将是一对一或一。我们希望从TableA
DatabaseA
FakeId
TableB
DatabaseB
中的SELECT * FROM TableA WHERE FakeId IN (SELECT FakeId FROM DatabaseB.TableB)
中获取{{1}}的所有财务记录。
我们无法在这两个SQL服务器之间创建链接服务器,因此执行{{1}}将无效。
谢谢, 保罗
答案 0 :(得分:2)
正如您所说,您可以使用两个源并使用合并连接转换将它们连接起来。
另一个(更多面向数据仓库的)解决方案是将两个表复制到单独的数据库(通常称为暂存区域),然后使用您提出的查询的变体在数据库级别上执行逻辑。此解决方案还允许您实现索引和其他性能增强技术,以优化集成。
答案 1 :(得分:1)
如果你可以使用SSIS,我认为你可以使用'Lookup'组件:
在SQL Server Integration Services中实现查找逻辑 http://www.simple-talk.com/sql/ssis/implementing-lookup-logic-in-sql-server-integration-services/