我使用T-SQL查詢直接在Microsoft SQL Server Studio的針對一個大型Oracle數據庫的查詢窗口,我的SQL服務器2005使用T-SQL和Oracle數據庫
我創建了一個鏈接服務器myOracleServer。通過使用以下T-SQL查詢:
SELECT COUNT(*) FROM myOracleServer..owner.myTable WHERE id = 1000 AND Dt = '2009-02-26'
只需要一個電話就花費1分多鐘。對於小型表而言,它是可以的,但Oracle側的myTable非常大,有數百萬行數據。
我發現的是,我可以使用OPENQUERY與SQL查詢進行類似的調用作爲傳遞函數。結果非常快。執行時間是00:00:02!
SELECT * FROM OPENQUERY(myOracleServer, 'SELECT COUNT(*) FROM owner.myTable WHERE ...');
我遇到的問題是查詢不是一個常量字符串。我可以在查詢更改ID和dt值,是這樣的:
'SELECT COUNT(*) FROM ownwer.myTable WHERE id = ' + CAST(@id AS VARCHAR)...
OPENQUERY不支持變量作爲查詢字符串,也不表達。
是否有任何其他方式讓傳遞查詢快速性能到Oracle?
正如我所說OPENQUERY確實支持變量。請參閱msdn for OPENQUERY。 – 2009-02-26 17:10:06
抱歉,錯字:不支持... – 2009-02-26 17:11:27