當我們打開我們的應用程序並運行Subsonic Select時,我們遇到了一個問題。select需要一段時間才能返回數據。對同一選擇的任何後續調用都會很快運行。 equivilent T-SQL也運行得非常快。就好像SubSonic在第一個連接上緩存了一些東西,並在隨後的連接上重複使用它。查詢運行速度很快,直到我們關閉應用程序並打開一個新的應用程序,第一次運行需要一段時間,但所有後續調用都很快。在第一次運行時查詢速度慢,但在後續調用時速度很快 - Subsonic 2.0
對此的任何想法?我們是否需要升級到更新的版本?
我無法在任何地方找到任何提及。
該應用程序是一個Windows應用程序,雖然我們有一個類似的問題與Web應用程序。查詢是一個簡單的選擇與內部連接:
Dim status As New subsonicdal.Status("statusCode", "active")
Dim clientPreferencesDataSet As DataSet = New SubSonic.Select(subsonicdal.ClientPreference.ClientIdColumn, subsonicdal.ClientPreferenceType.AssetOrUnitColumn, subsonicdal.ClientPreferenceUsage.UsageTypeColumn) _
.From(subsonicdal.ClientPreference.Schema) _
.InnerJoin(subsonicdal.ClientPreferenceType.Schema) _
.InnerJoin(subsonicdal.ClientPreferenceUsage.Schema) _
.Where(subsonicdal.ClientPreference.ClientIdColumn).IsEqualTo(clientId) _
.And(subsonicdal.ClientPreference.StatusidColumn).IsEqualTo(status.Statusid).ExecuteDataSet()
基本上,如果我把一個斷點Dim clientPreferencesDataSet As DataSet
線,執行它需要大約6秒線。如果我再次破產,它立即(不到一秒)。
ClientPreferences具有到ClientPreferenceUsage的外部整數鍵ClientPreferenceType ClientPreferences中有大約70條記錄,ClientPreferenceUsage中有大約70條記錄,ClientPreferenceType中有12條記錄。它是一個非常簡單的結構。如果我運行Subsonic在Mgt Studio中生成的SQL,它將立即生效。我試過InnerJoining狀態表,使用字符串返回的字段,但沒有區別。
謝謝Yannick,只是想知道是否有任何標誌可以防止這種行爲。如果使用沒有Subsonic的SqlConnection進行連接,我希望查詢每次都能夠快速運行,所以你的解釋是有效的,我只是想知道爲什麼這會造成明顯的延遲。 – Craig 2009-11-13 13:20:16