none
請問SqlParameter 的執行效能? RRS feed

  • 問題

  •  

    各位好:

          我在MS-SQL 2000 中有一個View ,我在使用時又跟一個Table 做Left Join

    我使用 SqlParameter 的方式傳了幾個參數值進去,出現了了Sql Time Out ,

    後來我將Sql Statement Copy 到 Management Studio 去跑 6秒就跑完了,

    Query Analyzer 也只花了 8 秒

    我再使用拼字串的方式,結果發現差不多十幾秒就跑完了(包含畫面顯示)。

    原本想說會不會是本機的Framework 2.0 的問題於是換了一台電腦試試結果是一樣的

     

    以上的測試讓我個人是覺得是 ADO.NET 的 SqlParameter 的問題

     

    以下是我用的軟體

    開發工具:VS2005

    開發項目:ASP.NET 2.0(C#)

    資料庫:MS-2000(在另一台主機上)

     

    不知各位有沒有遇過相同的情形?

    還是有什麼方式可以再去檢測看是哪邊的問題?

     

    謝謝

    2007年10月16日 上午 12:43

解答

  • 我覺得你要先用 SQL Server Profiler 來抓一下在 ADO.NET 執行指令時,有沒有把指令傳到資料庫去,以及其執行的時間。

    SqlParameter 只是裝載參數資料,真正執行的是 SqlCommand。

    2007年10月16日 上午 03:20
    版主

所有回覆

  • 我覺得你要先用 SQL Server Profiler 來抓一下在 ADO.NET 執行指令時,有沒有把指令傳到資料庫去,以及其執行的時間。

    SqlParameter 只是裝載參數資料,真正執行的是 SqlCommand。

    2007年10月16日 上午 03:20
    版主
  • 用Profiler 抓取之後發現

     

    如果使用參數的方式

    ADO 會產生 exec sp_executesql .......@xxx=xxx

     

    不使用參數的方式

    ADO 就直接傳 select * from xxx

     

    而 Management Studio 也是直接傳

    @xxx varchar(10)

    set @xxx = 'xxx'

    select * from xxx where xxx = @xxx

    過去SQL Server

     

    結論就是我錯怪ADO.NET 了

     

    剩下的只是不知 sp_executesql 內部是怎麼跑的照成如此大的差異

     

     

    最後還是要謝謝 小朱

     

     

    2007年10月16日 上午 06:50