日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

SQLServer訪問(wèn)Oracle查詢(xún)性能問(wèn)題解決

系統(tǒng) 2596 0
原文: SQLServer訪問(wèn)Oracle查詢(xún)性能問(wèn)題解決

1. 問(wèn)題

系統(tǒng)有個(gè)模塊,需要查詢(xún)Oracle數(shù)據(jù)庫(kù)中的數(shù)據(jù)。目前是通過(guò)建立鏈接服務(wù)器實(shí)現(xiàn)的。

SQLServer訪問(wèn)Oracle實(shí)現(xiàn) 可參考這篇文章 http://www.cnblogs.com/gnielee/archive/2010/09/07/access-oracle-from-sqlserver.html

目前的查詢(xún)語(yǔ)句就是一個(gè)簡(jiǎn)單的帶where條件的查詢(xún)語(yǔ)句,類(lèi)似如下:

      
        SELECT
      
      
        *
      
      
        FROM
      
       LINKED_NAME..ACCOUNT_NAME.TABLE_NAME 
      
        WHERE
      
       COLUMN1
      
        =
      
      SID;
    

?

存在的問(wèn)題是查詢(xún)速度非常慢,前臺(tái)報(bào)超時(shí)。所以準(zhǔn)備提升下查詢(xún)的性能

2. 分析

  首先,確定遠(yuǎn)程O(píng)racle的表在篩選字段上是否存在索引。經(jīng)確認(rèn),存在索引。

  然后,在SSMS客戶(hù)端中查看了執(zhí)行語(yǔ)句的執(zhí)行計(jì)劃,如下:

  從執(zhí)行計(jì)劃可以看出,過(guò)程沒(méi)有和自己設(shè)想的那樣,原以為SQLServer會(huì)將整個(gè)查詢(xún)提交到Oracle服務(wù)器執(zhí)行。而實(shí)際在遠(yuǎn)程查詢(xún)時(shí),并沒(méi)有加入where條件,而是將結(jié)果返回到本地后,在本地執(zhí)行篩選(有一個(gè)篩選器)

  這樣速度肯定會(huì)非常慢,因?yàn)椴樵?xún)沒(méi)有使用到索引查找,需要將遠(yuǎn)程數(shù)據(jù)全部傳輸?shù)奖镜睾蟛艌?zhí)行篩選,相當(dāng)于全表掃描,還多了網(wǎng)絡(luò)傳輸?shù)臅r(shí)間。

3. 解決

  其實(shí)只要能將帶where條件的查詢(xún)語(yǔ)句一并提交到Oracle服務(wù)器執(zhí)行遠(yuǎn)程查詢(xún),就可以解決性能問(wèn)題了。

  但問(wèn)題是OpenQuery不支持參數(shù)。見(jiàn)微軟MSDN http://technet.microsoft.com/zh-cn/library/ms188427.aspx

  但好在我們可以另辟蹊徑,通過(guò)拼接動(dòng)態(tài)SQL的方式實(shí)現(xiàn)傳遞查詢(xún)參數(shù)。

OpenQuery使用參數(shù)可參考這篇文章: http://www.cnblogs.com/Dannier/archive/2011/09/21/openquery.html

  通過(guò)這種方式優(yōu)化后,執(zhí)行計(jì)劃變?yōu)槿缦拢嚎梢钥吹綄?shí)際返回的行數(shù)很少了

  查詢(xún)速度提升明顯,由原來(lái)的前臺(tái)超時(shí)到現(xiàn)在的毫秒級(jí)。

  小小的得意一下^_^,歡迎拍磚。如有其他方法,求分享,謝謝!

?

SQLServer訪問(wèn)Oracle查詢(xún)性能問(wèn)題解決


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 石景山区| 丰都县| 文成县| 莎车县| 茌平县| 策勒县| 中卫市| 西昌市| 修水县| 泽州县| 禄丰县| 菏泽市| 保山市| 古蔺县| 中阳县| 成都市| 天峻县| 姜堰市| 濮阳县| 隆安县| 南宫市| 逊克县| 凯里市| 策勒县| 廊坊市| 盘山县| 方城县| 郸城县| 泰安市| 宜昌市| 邳州市| 徐汇区| 沙河市| 岑巩县| 临泉县| 大埔区| 炎陵县| 乌兰浩特市| 陇西县| 弋阳县| 太仆寺旗|