Мы столкнулись с проблемой, когда открываем наше приложение и запускаем дозвуковой выбор. Для выбора данных требуется некоторое время. Любые последующие звонки на тот же выбор выполняются очень быстро. Эквивалентный T-SQL также работает очень быстро. Как будто SubSonic что-то кеширует при первом соединении и повторно использует это при последующих соединениях. Запросы выполняются быстро, пока мы не закроем приложение, а затем не откроем новое, снова первый запуск занимает некоторое время, но все последующие вызовы выполняются быстро.
Есть идеи по этому поводу? Нужно ли обновляться до более новой версии?
Я нигде не мог найти упоминания об этом.
Это приложение для Windows, хотя у нас есть похожая проблема с веб-приложением. Запрос представляет собой простой выбор с внутренним объединением:
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 записей, 8 в ClientPreferenceUsage и 12 в ClientPreferenceType. Это очень простая структура. Если я запускаю SQL, который Subsonic генерирует в Mgt Studio, это немедленно. Я пробовал InnerJoining таблицу Status, используя строки для возвращаемых полей, но нет никакой разницы.