2011-01-27 100 views
0

一个新手需要一些逻辑流程的帮助:什么是最有效的方式来处理这个功能?

我正在使用随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列的LIKE语句时,3个字符传递因此,这里是我的问题:

难道是这样做更有效率,或者只是将所有记录选入数据集,将它们添加到数组中,然后搜索数组?每次这个函数运行时,一个数据源和列表的新实例会被创建,这是不是很糟糕?

在此先感谢。

回答

1

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

相关问题