2009-08-27 91 views
1

我正在研究一個對程序執行任意腳本的.NET程序。重新使用ADO.NET命令對象是一個好主意嗎?

當運動課開始寫數據庫訪問代碼,他簡單地暴露一個命令對象,其被重新使用的應用程序的其餘部分(設置CommandText/Type,主叫ExecuteNonQuery()等)爲每個語句。

我想這是一個重複的,相同的語句的重大性能打擊,因爲它們每次都被重新解析。

但是我想知道的是:如果每個語句都不同於前一個語句(不僅是不同的參數,而是完全不同的語句),這是否會降低執行速度?我無法在文檔中輕鬆找到答案。

順便說一下,使用的RDBMS是Oracle,但我想這個問題並不是特定於數據庫的。

P.S.我知道暴露相同的Command對象不是線程安全的,但這不是一個問題。

回答

2

創建新的命令對象有一些額外的開銷,所以在某些情況下,重用相同的命令是有意義的。但是,對於整個應用程序來說,一般情況下它似乎有點奇怪。

1

性能命中通常來自建立到數據庫的連接,但ADO.NET創建一個連接池來幫助這裏。

如果您希望避免每次重新解析語句,可以將它們放入存儲過程。

我想象你的同事只是使用一些舊式的方法,他繼承了在其他平臺上工作,重用命令對象確實有所作爲。

相關問題