リンクサーバーとしてMSSQLと統合されたOracleサーバーがあります。現在、クエリの最適化に取り組んでいます。私は次のように書かれたクエリを見つけました:
SELECT colName1, colName2, ..
FROM ORACLE.TBL_TBLENAME
WHERE something = @something
非常にゆっくりと動作します。一方、次のように記述された同じクエリ:
EXECUTE ('SELECT colName1, colName2, ..
FROM TBL_TBLENAME
WHERE something :something',@something) at ORACLE
はるかに速く動作します。
私が心配しているのは実行計画です。最初のクエリの推定サブツリーコストは0.16で、2番目のクエリの推定サブツリーコストは3.36です。2番目のクエリは「リモートスキャン」を実行します。これが良いかどうかはわかりません。
クエリはかなり頻繁に実行されることになっています(1分間に約20クエリ)。