新手需要一些逻辑流程的帮助:
我正在使用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列上执行类似语句。所以这是我的问题:
以这种方式更有效率,或者只是将所有记录选择到数据集中,将它们添加到数组中,然后搜索数组?每次运行此函数时,是否会创建新的数据源和列表实例?
提前致谢。
答案 0 :(得分:1)
通常最好让SQL进行过滤(从效率的角度来看)。当然,这是假设您的SP不是可怕低效。一般来说,SQL在过滤数据方面要比遍历数组要快得多。