什么是处理此功能的最有效方法?

时间:2011-01-27 19:23:24

标签: asp.net asp.net-ajax

新手需要一些逻辑流程的帮助:

我正在使用Asp.net Ajax工具包附带的Auto Complete扩展程序控件。此扩展程序连接到Web服务,该服务将运行每次用户键入文本框时查询数据库的函数。我们将要使用的数据库将有成千上万的记录,因此性能就是我的目标。这是我在Web服务中的功能:

   Public Function PatronList(ByVal prefixText As String, ByVal count As Integer) As String()

    Dim MyPatrons As New List(Of String)

    Dim MyConn = System.Configuration.ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString
    Dim sqlPatronList As New SqlDataSource(MyConn, "spBarredList " & prefixText)
    Dim tblPatronList As System.Data.DataView = sqlPatronList.Select(New DataSourceSelectArguments)

    Dim CurPatronRow As Long
    Dim MaxPatronRow As Long = tblPatronList.Count
    For CurPatronRow = 0 To MaxPatronRow - 1

        MyPatrons.Add(tblPatronList.Item(CurPatronRow).Item("FullName"))
    Next

    Return MyPatrons.ToArray

End Function

“spBarredList”是一个存储过程,当传入3个字符时,它在3列上执行类似语句。所以这是我的问题:

以这种方式更有效率,或者只是将所有记录选择到数据集中,将它们添加到数组中,然后搜索数组?每次运行此函数时,是否会创建新的数据源和列表实例?

提前致谢。

1 个答案:

答案 0 :(得分:1)

通常最好让SQL进行过滤(从效率的角度来看)。当然,这是假设您的SP不是可怕低效。一般来说,SQL在过滤数据方面要比遍历数组要快得多。