首页 文章

如何针对不同的数据库系统执行SQL查询?

提问于
浏览
0

我有一个关于如何针对不同数据库系统执行数据库查询的问题?

例如,我有一个以下SQL查询字符串:

SELECT A.F1, A.F2, B.F3, B.F4 
FROM TableA A, TableB B 
WHERE A.ID=B.ID AND B.ID=xyz

有什么解决方案可以在以下情况下执行上述查询:

  • TableA来自Oracle数据库,TableB也来自另一个实例的Oracle数据库

  • TableA来自SQL Server数据库,TableB来自Oracle数据库

  • TableA来自Oracle数据库,TableB来自SQL Server数据库

  • TableA来自SQL Server数据库,TableB也来自另一个SQL Server实例的SQL Server数据库

我知道,对于情况#1,我可以使用ORACLE DATABASE LINK功能(也可能是#3) . 但是,是否有任何可以解决上述所有情况的通用解决方案?例如,可能还有另一种情况,我想从MySQL和SQL Server数据库连接两个表 .

对于编码,我使用的是C#/ .NET,欢迎任何建议,包括加入代码中的数据 .

谢谢!

1 回答

  • 0

    这称为联合查询

    您可以使用SQL Server联合功能(链接服务器)并在SQL Server中运行查询 . 您可以使用Oracles联合功能(Oracle异构服务)并在Oracle中运行查询 .

    无论哪种方式,您都需要选择一个数据库服务器,使该服务器知道另一个(外部)数据库,然后在服务器上执行查询 .

    请记住,您不能期望从中获得良好的性能,因为在大多数情况下,执行服务器在本地加载所有源记录并在本地加入 .

    否则,您需要在应用中编写自己的“联合”功能 . 这是非常重要的,即数据类型与供应商之间不完全匹配,因此您需要构建一些智能 . 此外,如果您要加入特别大的表,您最好确保您的算法已经优化,或者您将运行我们的内存 . 此外,现有产品(SQL,Oracle,Cognos等)中的联合查询能力是非常大的公司进行大量开发的结果 .

    您能告诉我们您希望加入多少条记录,并且各种源数据库服务器大部分都是固定的,还是针对即席查询工具?

相关问题