私は大規模なOracle DBへの反対のMicrosoft SQL ServerのStudioのクエリウィンドウに直接T-SQLクエリを使用していますし、私のSQLサーバーは、2005年オラクルDBとT-SQLを使用して
である私はとしてリンクサーバーを作成しましたmyOracleServer。次のT-SQLクエリを使用します。
SELECT COUNT(*) FROM myOracleServer..owner.myTable WHERE id = 1000 AND Dt = '2009-02-26'
1回の呼び出しで1分以上かかります。小さなサイズのテーブルの場合はOKですが、Oracle側のMyTableは非常に大きく、数百万行のデータがあります。
私が知ったのは、OPENQUERYを使用して、SQLクエリをパススルーとして呼び出すことができるということです。結果は非常に高速です。実行時間は00:00:02です!
SELECT * FROM OPENQUERY(myOracleServer, 'SELECT COUNT(*) FROM owner.myTable WHERE ...');
問題は、クエリが定数文字列ではないということです。
'SELECT COUNT(*) FROM ownwer.myTable WHERE id = ' + CAST(@id AS VARCHAR)...
OPENQUERYはクエリ文字列も式も変数をサポートしていません。
高速パフォーマンスでOracleにパススルー・クエリを取得する方法はありますか。
私が言及したように、OPENQUERYは変数をサポートしています。 OPENQUERYについてはmsdnを参照してください。 –
タイプミスで申し訳ありません:サポートしていません... –
ええ、私はそれを見ました。箱の外では、ステートメントで「temp」sprocを作成することができますが、perfの違いが絶対に驚くべきものでなければ、少し過度のことになります。私はCLR procがオプションかどうか疑問に思います。 –