【问题标题】:Whats the most efficient way to handle this function?处理此功能的最有效方法是什么?
【发布时间】:2011-01-28 03:36:47
【问题描述】:

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

我正在使用 Asp.net Ajax 工具包附带的 Auto Complete 扩展器控件。这个扩展程序连接到一个 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 列上执行类似语句。所以这是我的问题:

这样做会更有效,还是只是将所有记录选择到数据集中,将它们添加到数组中,然后搜索数组?每次运行此函数时都会创建一个数据源和列表的新实例,这也很糟糕吗?

提前致谢。

【问题讨论】:

    标签: asp.net asp.net-ajax


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 2018-02-10
      • 2012-01-21
      • 1970-01-01
      • 2015-02-14
      相关资源
      最近更新 更多