第一次运行时查询速度慢,但后续调用速度快--Partonic 2.0

时间:2009-11-13 12:25:36

标签: subsonic

当我们打开应用程序并运行Subsonic时,我们遇到了一个问题。选择select需要一段时间才能返回数据。对同一选择的任何后续调用都会非常快速地运行。等效的T-SQL也可以非常快速地运行。就好像SubSonic在第一个连接上缓存一些内容并在后续连接上重用它。查询运行得很快,直到我们关闭应用程序然后再打开一个新应用程序,第一次运行需要一段时间,但所有后续调用都很快。

有关于此的任何想法吗?我们需要升级到更新的版本吗?

我在任何地方都找不到这个。

该应用程序是一个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中有8条记录,ClientPreferenceType中有12条记录。它结构非常简单。如果我运行Subsonic在Mgt Studio中生成的SQL,则立即执行。我已经尝试了InnerJoining状态表,使用字符串返回的字段,但没有区别。

2 个答案:

答案 0 :(得分:1)

我想到了两件事:

  • 第一次使用时可能是数据库连接(懒惰)
  • 或者,如果它是准备好的查询,在第一次运行后,执行计划被缓存,后续调用将更快

答案 1 :(得分:1)

SubSonic不会缓存任何内容 - 它只是尝试执行您抛出的任何查询。这是一个网络应用程序?如果是这样(您可能知道),首先加载时间非常慢。

您可以提供的详细信息越多越好 - 例如,可以精确定位负载问题的测试以及数据库结构(如果可以的话)。