Мы столкнулись с проблемой, когда мы открываем наше приложение и запускаем Subsonic. Выберите, чтобы выбрать время, чтобы вернуть данные. Любые последующие вызовы на один и тот же выбор запускаются очень быстро. Экваториальный T-SQL также работает очень быстро. Это похоже на то, что SubSonic кэширует что-то в первом соединении и повторно использует его при последующих подключениях. Запросы выполняются быстро, пока мы не закроем приложение, а затем не откроем новый, снова первый запуск займет некоторое время, но все последующие вызовы бывают быстрыми.Ошибка при первом запуске, но быстро при последующих вызовах - Subsonic 2.0
Любые идеи по этому вопросу? Нужно ли обновляться до более новой версии?
Я не мог найти упоминания об этом в любом месте.
Приложение - приложение для 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 имеются внешние ключи Integer для ClientPreferenceUsage & ClientPreferenceType существует около 70 записей в ClientPreferences, 8 в ClientPreferenceUsage и 12 в ClientPreferenceType. Его очень простая структура. Если я запустил SQL, который Subsonic генерирует в Mgt Studio, это немедленно. Я попробовал InnerJoining таблицу Status, используя строки для возвращенных полей, но нет никакой разницы.
Спасибо Yannick, просто интересно, есть ли где-нибудь флаг, который может помешать этому поведению. Если подключение с использованием SqlConnection без Subsonic, я бы ожидал, что запрос будет работать быстро каждый раз, чтобы ваше объяснение было правдой. Мне просто интересно, почему это вызывает заметную задержку. – Craig